mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
ab0905c6d7
The original code comes, as far as I know, from Google (Mark Callaghan's team) with additional work from Percona, Ourdelta and Weldon Whipple. This code provides the same functionallity, but with a lot of changes to make it faster and better fit the MariaDB infrastucture. Added new status variables: - Com_show_client_statistics, Com_show_index_statistics, Com_show_table_statistics, Com_show_user_statistics - Access_denied_errors, Busy_time (clock time), Binlog_bytes_written, Cpu_time, Empty_queries, Rows_sent, Rows_read Added new variable / startup option 'userstat' to control if user statistics should be enabled or not Added my_getcputime(); Returns cpu time used by this thread. New FLUSH commands: - FLUSH SLOW QUERY LOG - FLUSH TABLE_STATISTICS - FLUSH INDEX_STATISTICS - FLUSH USER_STATISTICS - FLUSH CLIENT_STATISTICS New SHOW commands: - SHOW CLIENT_STATISTICS - SHOW USER_STATISTICS - SHOW TABLE_STATISTICS - SHOW INDEX_STATISTICS New Information schemas: - CLIENT_STATISTICS - USER_STATISTICS - INDEX_STATISTICS - TABLE_STATISTICS Added support for all new flush commands to mysqladmin Added handler::ha_... wrappers for all handler read calls to do statistics counting - Changed all code to use new ha_... calls - Count number of read rows, changed rows and rows read trough an index Added counting of number of bytes sent to binary log (status variable Binlog_bytes_written) Added counting of access denied errors (status variable Access_denied_erors) Bugs fixed: - Fixed bug in add_to_status() and add_diff_to_status() where longlong variables where threated as long - CLOCK_GETTIME was not propely working on Linuxm client/mysqladmin.cc: Added support for all new flush commmands and some common combinations: flush-slow-log flush-table-statistics flush-index-statistics flush-user-statistics flush-client-statistics flush-all-status flush-all-statistics configure.in: Added checking if clock_gettime needs the librt. (Fixes Bug #37639 clock_gettime is never used/enabled in Linux/Unix) include/my_sys.h: Added my_getcputime() include/mysql_com.h: Added LIST_PROCESS_HOST_LEN & new REFRESH target defines mysql-test/r/information_schema.result: New information schema tables added mysql-test/r/information_schema_all_engines.result: New information schema tables added mysql-test/r/information_schema_db.result: New information schema tables added mysql-test/r/log_slow.result: Added testing that flosh slow query logs is accepted mysql-test/r/status_user.result: Basic testing of user, client, table and index statistics mysql-test/t/log_slow.test: Added testing that flosh slow query logs is accepted mysql-test/t/status_user-master.opt: Ensure that we get a fresh restart before running status_user.test mysql-test/t/status_user.test: Basic testing of user, client, table and index statistics mysys/my_getsystime.c: Added my_getcputime() Returns cpu time used by this thread. sql/authors.h: Updated authors to have core and original MySQL developers first. sql/event_data_objects.cc: Updated call to mysql_reset_thd_for_next_command() sql/event_db_repository.cc: Changed to use new ha_... calls sql/filesort.cc: Changed to use new ha_... calls sql/ha_partition.cc: Changed to use new ha_... calls Fixed comment syntax sql/handler.cc: Changed to use new ha_... calls Reset table statistics Added code to update global table and index status Added counting of rows changed sql/handler.h: Added table and index statistics variables Added function reset_statistics() Added handler::ha_... wrappers for all handler read calls to do statistics counting Protected all normal read calls to ensure we use the new calls in the server. Made ha_partition a friend class so that partition code can call the old read functions sql/item_subselect.cc: Changed to use new ha_... calls sql/lex.h: Added keywords for new information schema tables and flush commands sql/log.cc: Added flush_slow_log() Added counting of number of bytes sent to binary log Removed not needed test of thd (It's used before, so it's safe to use) Added THD object to MYSQL_BIN_LOG::write_cache() to simplify statistics counting sql/log.h: Added new parameter to write_cache() Added flush_slow_log() functions. sql/log_event.cc: Updated call to mysql_reset_thd_for_next_command() Changed to use new ha_... calls sql/log_event_old.cc: Updated call to mysql_reset_thd_for_next_command() Changed to use new ha_... calls sql/mysql_priv.h: Updated call to mysql_reset_thd_for_next_command() Added new statistics functions and variables needed by these. sql/mysqld.cc: Added new statistics variables and structures to handle these Added new status variables: - Com_show_client_statistics, Com_show_index_statistics, Com_show_table_statistics, Com_show_user_statistics - Access_denied_errors, Busy_time (clock time), Binlog_bytes_written, Cpu_time, Empty_queries, Rows_set, Rows_read Added new option 'userstat' to control if user statistics should be enabled or not sql/opt_range.cc: Changed to use new ha_... calls sql/opt_range.h: Changed to use new ha_... calls sql/opt_sum.cc: Changed to use new ha_... calls sql/records.cc: Changed to use new ha_... calls sql/set_var.cc: Added variable 'userstat' sql/sp.cc: Changed to use new ha_... calls sql/sql_acl.cc: Changed to use new ha_... calls Added counting of access_denied_errors sql/sql_base.cc: Added call to statistics functions sql/sql_class.cc: Added usage of org_status_var, to store status variables at start of command Added functions THD::update_stats(), THD::update_all_stats() Fixed bug in add_to_status() and add_diff_to_status() where longlong variables where threated as long sql/sql_class.h: Added new status variables to status_var Moved variables that was not ulong in status_var last. Added variables to THD for storing temporary values during statistics counting sql/sql_connect.cc: Variables and functions to calculate user and client statistics Added counting of access_denied_errors and lost_connections sql/sql_cursor.cc: Changed to use new ha_... calls sql/sql_handler.cc: Changed to use new ha_... calls sql/sql_help.cc: Changed to use new ha_... calls sql/sql_insert.cc: Changed to use new ha_... calls sql/sql_lex.h: Added SQLCOM_SHOW_USER_STATS, SQLCOM_SHOW_TABLE_STATS, SQLCOM_SHOW_INDEX_STATS, SQLCOM_SHOW_CLIENT_STATS sql/sql_parse.cc: Added handling of: - SHOW CLIENT_STATISTICS - SHOW USER_STATISTICS - SHOW TABLE_STATISTICS - SHOW INDEX_STATISTICS Added handling of new FLUSH commands: - FLUSH SLOW QUERY LOGS - FLUSH TABLE_STATISTICS - FLUSH INDEX_STATISTICS - FLUSH USER_STATISTICS - FLUSH CLIENT_STATISTICS Added THD parameter to mysql_reset_thd_for_next_command() Added initialization and calls to user statistics functions Added increment of statistics variables empty_queries, rows_sent and access_denied_errors. Added counting of cpu time per query sql/sql_plugin.cc: Changed to use new ha_... calls sql/sql_prepare.cc: Updated call to mysql_reset_thd_for_next_command() sql/sql_select.cc: Changed to use new ha_... calls Indentation changes sql/sql_servers.cc: Changed to use new ha_... calls sql/sql_show.cc: Added counting of access denied errors Added function for new information schema tables: - CLIENT_STATISTICS - USER_STATISTICS - INDEX_STATISTICS - TABLE_STATISTICS Changed to use new ha_... calls sql/sql_table.cc: Changed to use new ha_... calls sql/sql_udf.cc: Changed to use new ha_... calls sql/sql_update.cc: Changed to use new ha_... calls sql/sql_yacc.yy: Add new show and flush commands sql/structs.h: Add name_length to KEY to avoid some strlen Added cache_name to KEY for fast storage of keyvalue in cache Added structs USER_STATS, TABLE_STATS, INDEX_STATS Added function prototypes for statistics functions sql/table.cc: Store db+table+index name into keyinfo->cache_name sql/table.h: Added new information schema tables sql/tztime.cc: Changed to use new ha_... calls
156 lines
7.4 KiB
C
156 lines
7.4 KiB
C
/* Copyright (C) 2005-2006 MySQL AB
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation; version 2 of the License.
|
||
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program; if not, write to the Free Software
|
||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||
|
||
/* Structure of the name list */
|
||
|
||
struct show_table_authors_st {
|
||
const char *name;
|
||
const char *location;
|
||
const char *comment;
|
||
};
|
||
|
||
/*
|
||
Output from "SHOW AUTHORS"
|
||
|
||
If you can update it, you get to be in it :)
|
||
|
||
Don't be offended if your name is not in here, just add it!
|
||
|
||
IMPORTANT: Names should be added in alphabetical order (by last name).
|
||
|
||
Names should be encoded using UTF-8.
|
||
*/
|
||
|
||
struct show_table_authors_st show_table_authors[]= {
|
||
{ "Michael (Monty) Widenius", "Tusby, Finland",
|
||
"Lead developer and main author" },
|
||
{ "David Axmark", "London, England",
|
||
"MySQL founder; Small stuff long time ago, Monty ripped it out!" },
|
||
{ "Sergei Golubchik", "Kerpen, Germany",
|
||
"Full-text search, precision math" },
|
||
{ "Igor Babaev", "Bellevue, USA", "Optimizer, keycache, core work"},
|
||
{ "Sergey Petrunia", "St. Petersburg, Russia", "Optimizer"},
|
||
{ "Oleksandr Byelkin", "Lugansk, Ukraine",
|
||
"Query Cache (4.0), Subqueries (4.1), Views (5.0)" },
|
||
{ "Brian (Krow) Aker", "Seattle, WA, USA",
|
||
"Architecture, archive, federated, bunch of little stuff :)" },
|
||
{ "Kristian Nielsen", "Copenhagen, Denmark",
|
||
"General build stuff," },
|
||
{ "Alexander (Bar) Barkov", "Izhevsk, Russia",
|
||
"Unicode and character sets (4.1)" },
|
||
{ "Guilhem Bichot", "Bordeaux, France", "Replication (since 4.0)" },
|
||
{ "Venu Anuganti", "", "Client/server protocol (4.1)" },
|
||
{ "Konstantin Osipov", "Moscow, Russia",
|
||
"Prepared statements (4.1), Cursors (5.0)" },
|
||
{ "Dmitri Lenev", "Moscow, Russia",
|
||
"Time zones support (4.1), Triggers (5.0)" },
|
||
{ "Omer BarNir", "Sunnyvale, CA, USA",
|
||
"Testing (sometimes) and general QA stuff" },
|
||
{ "John Birrell", "", "Emulation of pthread_mutex() for OS/2" },
|
||
{ "Andreas F. Bobak", "", "AGGREGATE extension to user-defined functions" },
|
||
{ "Alexey Botchkov (Holyfoot)", "Izhevsk, Russia",
|
||
"GIS extensions (4.1), embedded server (4.1), precision math (5.0)"},
|
||
{ "Reggie Burnett", "Nashville, TN, USA", "Windows development, Connectors" },
|
||
{ "Kent Boortz", "Orebro, Sweden", "Test platform, and general build stuff" },
|
||
{ "Tim Bunce", "", "mysqlhotcopy" },
|
||
{ "Yves Carlier", "", "mysqlaccess" },
|
||
{ "Joshua Chamas", "Cupertino, CA, USA",
|
||
"Concurrent insert, extended date syntax" },
|
||
{ "Petr Chardin", "Moscow, Russia",
|
||
"Instance Manager (5.0), Server log tables (5.1)" },
|
||
{ "Wei-Jou Chen", "", "Chinese (Big5) character set" },
|
||
{ "Albert Chin-A-Young", "",
|
||
"Tru64 port, large file support, better TCP wrappers support" },
|
||
{ "Jorge del Conde", "Mexico City, Mexico", "Windows development" },
|
||
{ "Antony T. Curtis", "Norwalk, CA, USA",
|
||
"Parser, port to OS/2, storage engines and some random stuff" },
|
||
{ "Yuri Dario", "", "OS/2 port" },
|
||
{ "Andrei Elkin", "Espoo, Finland", "Replication" },
|
||
{ "Patrick Galbraith", "Sharon, NH", "Federated Engine, mysqlslap" },
|
||
{ "Lenz Grimmer", "Hamburg, Germany",
|
||
"Production (build and release) engineering" },
|
||
{ "Nikolay Grishakin", "Austin, TX, USA", "Testing - Server" },
|
||
{ "Wei He", "", "Chinese (GBK) character set" },
|
||
{ "Eric Herman", "Amsterdam, Netherlands", "Bug fixing - federated" },
|
||
{ "Andrey Hristov", "Walldorf, Germany", "Event scheduler (5.1)" },
|
||
{ "Alexander (Alexi) Ivanov", "St. Petersburg, Russia", "Replication" },
|
||
{ "Alexander (Salle) Keremidarski", "Sofia, Bulgaria",
|
||
"Bug fixing" },
|
||
{ "Mats Kindahl", "Storvreta, Sweden", "Replication" },
|
||
{ "Serge Kozlov", "Velikie Luki, Russia", "Testing - Cluster" },
|
||
{ "Hakan Küçükyılmaz", "Walldorf, Germany", "Testing - Server" },
|
||
{ "Greg (Groggy) Lehey", "Uchunga, SA, Australia", "Backup" },
|
||
{ "Matthias Leich", "Berlin, Germany", "Testing - Server" },
|
||
{ "Arjen Lentz", "Brisbane, Australia",
|
||
"Documentation (2001-2004), Dutch error messages, LOG2()" },
|
||
{ "Marc Liyanage", "", "Created Mac OS X packages" },
|
||
{ "Zarko Mocnik", "", "Sorting for Slovenian language" },
|
||
{ "Per-Erik Martin", "Uppsala, Sweden", "Stored Procedures (5.0)" },
|
||
{ "Alexis Mikhailov", "", "User-defined functions" },
|
||
{ "Sinisa Milivojevic", "Larnaca, Cyprus",
|
||
"UNION (4.0), Subqueries in FROM clause (4.1), many other features" },
|
||
{ "Jonathan (Jeb) Miller", "Kyle, TX, USA",
|
||
"Testing - Cluster, Replication" },
|
||
{ "Elliot Murphy", "Cocoa, FL, USA", "Replication and backup" },
|
||
{ "Pekka Nouisiainen", "Stockholm, Sweden",
|
||
"NDB Cluster: BLOB support, character set support, ordered indexes" },
|
||
{ "Alexander Nozdrin", "Moscow, Russia",
|
||
"Bug fixing (Stored Procedures, 5.0)" },
|
||
{ "Per Eric Olsson", "", "Testing of dynamic record format" },
|
||
{ "Jonas Oreland", "Stockholm, Sweden",
|
||
"NDB Cluster, Online Backup, lots of other things" },
|
||
{ "Alexander (Sasha) Pachev", "Provo, UT, USA",
|
||
"Statement-based replication, SHOW CREATE TABLE, mysql-bench" },
|
||
{ "Irena Pancirov", "", "Port to Windows with Borland compiler" },
|
||
{ "Jan Pazdziora", "", "Czech sorting order" },
|
||
{ "Benjamin Pflugmann", "",
|
||
"Extended MERGE storage engine to handle INSERT" },
|
||
{ "Igor Romanenko", "",
|
||
"mysqldump" },
|
||
{ "Mikael Ronström", "Stockholm, Sweden",
|
||
"NDB Cluster, Partitioning (5.1), Optimizations" },
|
||
{ "Tõnu Samuel", "",
|
||
"VIO interface, other miscellaneous features" },
|
||
{ "Carsten Segieth (Pino)", "Fredersdorf, Germany", "Testing - Server"},
|
||
{ "Martin Sköld", "Stockholm, Sweden",
|
||
"NDB Cluster: Unique indexes, integration into MySQL" },
|
||
{ "Timothy Smith", "Auckland, New Zealand",
|
||
"Dynamic character sets, parts of the build system, libmysqld"},
|
||
{ "Miguel Solorzano", "Florianopolis, Santa Catarina, Brazil",
|
||
"Windows development, Windows NT service"},
|
||
{ "Punita Srivastava", "Austin, TX, USA", "Testing - Merlin"},
|
||
{ "Alexey Stroganov (Ranger)", "Lugansk, Ukraine", "Testing - Benchmarks"},
|
||
{ "Ingo Strüwing", "Berlin, Germany", "Bug fixing" },
|
||
{ "Magnus Svensson", "Öregrund, Sweden",
|
||
"NDB Cluster: Integration into MySQL, test framework" },
|
||
{ "Zeev Suraski", "", "FROM_UNIXTIME(), ENCRYPT()" },
|
||
{ "TAMITO", "",
|
||
"The _MB character set macros and UJIS and SJIS character sets" },
|
||
{ "Jani Tolonen", "Helsinki, Finland",
|
||
"mysqlimport, extensions to command-line clients, PROCEDURE ANALYSE()" },
|
||
{ "Lars Thalmann", "Stockholm, Sweden",
|
||
"Replication and cluster development" },
|
||
{ "Tomas Ulin", "Stockholm, Sweden",
|
||
"NDB Cluster: Configuration, installation" },
|
||
{ "Gianmassimo Vigazzola", "", "Initial Windows port" },
|
||
{ "Sergey Vojtovich", "Izhevsk, Russia", "Plugins infrastructure (5.1)" },
|
||
{ "Matt Wagner", "Northfield, MN, USA", "Bug fixing" },
|
||
{ "Jim Winstead Jr.", "Los Angeles, CA, USA", "Bug fixing" },
|
||
{ "Peter Zaitsev", "Tacoma, WA, USA",
|
||
"SHA1(), AES_ENCRYPT(), AES_DECRYPT(), bug fixing" },
|
||
{"Mark Mark Callaghan", "Texas, USA", "Statistics patches"},
|
||
{"Percona", "CA, USA", "Microslow patches"},
|
||
{NULL, NULL, NULL}
|
||
};
|