diff options
author | Michael Widenius <monty@askmonty.org> | 2009-10-19 20:14:48 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2009-10-19 20:14:48 +0300 |
commit | ab0905c6d7041928b260adb60ff551275e8153bc (patch) | |
tree | 1f5b728531998dd837e406b4aa6a20094246ee35 /mysql-test | |
parent | daccf1748344e011267ad3f0f093c49c6530d050 (diff) | |
download | mariadb-git-ab0905c6d7041928b260adb60ff551275e8153bc.tar.gz |
This is based on the userstatv2 patch from Percona and OurDelta.
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
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/information_schema.result | 14 | ||||
-rw-r--r-- | mysql-test/r/information_schema_all_engines.result | 26 | ||||
-rw-r--r-- | mysql-test/r/information_schema_db.result | 1 | ||||
-rw-r--r-- | mysql-test/r/log_slow.result | 1 | ||||
-rw-r--r-- | mysql-test/r/status_user.result | 166 | ||||
-rw-r--r-- | mysql-test/t/log_slow.test | 6 | ||||
-rw-r--r-- | mysql-test/t/status_user-master.opt | 1 | ||||
-rw-r--r-- | mysql-test/t/status_user.test | 97 |
8 files changed, 310 insertions, 2 deletions
diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 65378b62521..8c8083de9a8 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -45,6 +45,7 @@ NOT (table_schema = 'INFORMATION_SCHEMA' AND table_name LIKE 'PBXT_%'); select * from v1 ORDER BY c COLLATE utf8_bin; c CHARACTER_SETS +CLIENT_STATISTICS COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY COLUMNS @@ -54,6 +55,7 @@ EVENTS FILES GLOBAL_STATUS GLOBAL_VARIABLES +INDEX_STATISTICS INNODB_BUFFER_POOL_PAGES INNODB_BUFFER_POOL_PAGES_BLOB INNODB_BUFFER_POOL_PAGES_INDEX @@ -82,8 +84,10 @@ STATISTICS TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES +TABLE_STATISTICS TRIGGERS USER_PRIVILEGES +USER_STATISTICS VIEWS XTRADB_ENHANCEMENTS columns_priv @@ -121,6 +125,7 @@ c table_name TABLES TABLES TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_PRIVILEGES TABLE_PRIVILEGES +TABLE_STATISTICS TABLE_STATISTICS TRIGGERS TRIGGERS tables_priv tables_priv time_zone time_zone @@ -140,6 +145,7 @@ c table_name TABLES TABLES TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_PRIVILEGES TABLE_PRIVILEGES +TABLE_STATISTICS TABLE_STATISTICS TRIGGERS TRIGGERS tables_priv tables_priv time_zone time_zone @@ -159,6 +165,7 @@ c table_name TABLES TABLES TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_PRIVILEGES TABLE_PRIVILEGES +TABLE_STATISTICS TABLE_STATISTICS TRIGGERS TRIGGERS tables_priv tables_priv time_zone time_zone @@ -640,12 +647,13 @@ from information_schema.tables where table_schema='information_schema' limit 2; TABLE_NAME TABLE_TYPE ENGINE CHARACTER_SETS SYSTEM VIEW MEMORY -COLLATIONS SYSTEM VIEW MEMORY +CLIENT_STATISTICS SYSTEM VIEW MEMORY show tables from information_schema like "T%"; Tables_in_information_schema (T%) TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES +TABLE_STATISTICS TRIGGERS create database information_schema; ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema' @@ -655,6 +663,7 @@ Tables_in_information_schema (T%) Table_type TABLES SYSTEM VIEW TABLE_CONSTRAINTS SYSTEM VIEW TABLE_PRIVILEGES SYSTEM VIEW +TABLE_STATISTICS SYSTEM VIEW TRIGGERS SYSTEM VIEW create table t1(a int); ERROR 42S02: Unknown table 't1' in information_schema @@ -667,6 +676,7 @@ Tables_in_information_schema (T%) TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES +TABLE_STATISTICS TRIGGERS select table_name from tables where table_name='user'; table_name @@ -856,6 +866,7 @@ TABLE_NAME COLUMN_NAME PRIVILEGES COLUMNS TABLE_NAME select COLUMN_PRIVILEGES TABLE_NAME select FILES TABLE_NAME select +INDEX_STATISTICS TABLE_NAME select KEY_COLUMN_USAGE TABLE_NAME select PARTITIONS TABLE_NAME select REFERENTIAL_CONSTRAINTS TABLE_NAME select @@ -863,6 +874,7 @@ STATISTICS TABLE_NAME select TABLES TABLE_NAME select TABLE_CONSTRAINTS TABLE_NAME select TABLE_PRIVILEGES TABLE_NAME select +TABLE_STATISTICS TABLE_NAME select VIEWS TABLE_NAME select INNODB_BUFFER_POOL_PAGES_INDEX table_name select INNODB_INDEX_STATS table_name select diff --git a/mysql-test/r/information_schema_all_engines.result b/mysql-test/r/information_schema_all_engines.result index d7f5c30e9a1..beddce575e7 100644 --- a/mysql-test/r/information_schema_all_engines.result +++ b/mysql-test/r/information_schema_all_engines.result @@ -2,6 +2,7 @@ use INFORMATION_SCHEMA; show tables; Tables_in_information_schema CHARACTER_SETS +CLIENT_STATISTICS COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY COLUMNS @@ -11,6 +12,7 @@ EVENTS FILES GLOBAL_STATUS GLOBAL_VARIABLES +INDEX_STATISTICS KEY_COLUMN_USAGE PARTITIONS PLUGINS @@ -26,8 +28,10 @@ STATISTICS TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES +TABLE_STATISTICS TRIGGERS USER_PRIVILEGES +USER_STATISTICS VIEWS INNODB_BUFFER_POOL_PAGES PBXT_STATISTICS @@ -60,6 +64,7 @@ c2.column_name LIKE '%SCHEMA%' ); table_name column_name CHARACTER_SETS CHARACTER_SET_NAME +CLIENT_STATISTICS CLIENT COLLATIONS COLLATION_NAME COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME COLUMNS TABLE_SCHEMA @@ -69,6 +74,7 @@ EVENTS EVENT_SCHEMA FILES TABLE_SCHEMA GLOBAL_STATUS VARIABLE_NAME GLOBAL_VARIABLES VARIABLE_NAME +INDEX_STATISTICS TABLE_SCHEMA KEY_COLUMN_USAGE CONSTRAINT_SCHEMA PARTITIONS TABLE_SCHEMA PLUGINS PLUGIN_NAME @@ -84,8 +90,10 @@ STATISTICS TABLE_SCHEMA TABLES TABLE_SCHEMA TABLE_CONSTRAINTS CONSTRAINT_SCHEMA TABLE_PRIVILEGES TABLE_SCHEMA +TABLE_STATISTICS TABLE_SCHEMA TRIGGERS TRIGGER_SCHEMA USER_PRIVILEGES GRANTEE +USER_STATISTICS USER VIEWS TABLE_SCHEMA INNODB_BUFFER_POOL_PAGES page_type PBXT_STATISTICS ID @@ -118,6 +126,7 @@ c2.column_name LIKE '%SCHEMA%' ); table_name column_name CHARACTER_SETS CHARACTER_SET_NAME +CLIENT_STATISTICS CLIENT COLLATIONS COLLATION_NAME COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME COLUMNS TABLE_SCHEMA @@ -127,6 +136,7 @@ EVENTS EVENT_SCHEMA FILES TABLE_SCHEMA GLOBAL_STATUS VARIABLE_NAME GLOBAL_VARIABLES VARIABLE_NAME +INDEX_STATISTICS TABLE_SCHEMA KEY_COLUMN_USAGE CONSTRAINT_SCHEMA PARTITIONS TABLE_SCHEMA PLUGINS PLUGIN_NAME @@ -142,8 +152,10 @@ STATISTICS TABLE_SCHEMA TABLES TABLE_SCHEMA TABLE_CONSTRAINTS CONSTRAINT_SCHEMA TABLE_PRIVILEGES TABLE_SCHEMA +TABLE_STATISTICS TABLE_SCHEMA TRIGGERS TRIGGER_SCHEMA USER_PRIVILEGES GRANTEE +USER_STATISTICS USER VIEWS TABLE_SCHEMA INNODB_BUFFER_POOL_PAGES page_type PBXT_STATISTICS ID @@ -182,6 +194,7 @@ group by c2.column_type order by num limit 1) group by t.table_name order by num1, t.table_name; table_name group_concat(t.table_schema, '.', t.table_name) num1 CHARACTER_SETS information_schema.CHARACTER_SETS 1 +CLIENT_STATISTICS information_schema.CLIENT_STATISTICS 1 COLLATIONS information_schema.COLLATIONS 1 COLLATION_CHARACTER_SET_APPLICABILITY information_schema.COLLATION_CHARACTER_SET_APPLICABILITY 1 COLUMNS information_schema.COLUMNS 1 @@ -191,6 +204,7 @@ EVENTS information_schema.EVENTS 1 FILES information_schema.FILES 1 GLOBAL_STATUS information_schema.GLOBAL_STATUS 1 GLOBAL_VARIABLES information_schema.GLOBAL_VARIABLES 1 +INDEX_STATISTICS information_schema.INDEX_STATISTICS 1 INNODB_BUFFER_POOL_PAGES information_schema.INNODB_BUFFER_POOL_PAGES 1 INNODB_BUFFER_POOL_PAGES_BLOB information_schema.INNODB_BUFFER_POOL_PAGES_BLOB 1 INNODB_BUFFER_POOL_PAGES_INDEX information_schema.INNODB_BUFFER_POOL_PAGES_INDEX 1 @@ -220,8 +234,10 @@ STATISTICS information_schema.STATISTICS 1 TABLES information_schema.TABLES 1 TABLE_CONSTRAINTS information_schema.TABLE_CONSTRAINTS 1 TABLE_PRIVILEGES information_schema.TABLE_PRIVILEGES 1 +TABLE_STATISTICS information_schema.TABLE_STATISTICS 1 TRIGGERS information_schema.TRIGGERS 1 USER_PRIVILEGES information_schema.USER_PRIVILEGES 1 +USER_STATISTICS information_schema.USER_STATISTICS 1 VIEWS information_schema.VIEWS 1 XTRADB_ENHANCEMENTS information_schema.XTRADB_ENHANCEMENTS 1 Database: information_schema @@ -229,6 +245,7 @@ Database: information_schema | Tables | +---------------------------------------+ | CHARACTER_SETS | +| CLIENT_STATISTICS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | @@ -238,6 +255,7 @@ Database: information_schema | FILES | | GLOBAL_STATUS | | GLOBAL_VARIABLES | +| INDEX_STATISTICS | | KEY_COLUMN_USAGE | | PARTITIONS | | PLUGINS | @@ -253,8 +271,10 @@ Database: information_schema | TABLES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | +| TABLE_STATISTICS | | TRIGGERS | | USER_PRIVILEGES | +| USER_STATISTICS | | VIEWS | | INNODB_BUFFER_POOL_PAGES | | PBXT_STATISTICS | @@ -277,6 +297,7 @@ Database: INFORMATION_SCHEMA | Tables | +---------------------------------------+ | CHARACTER_SETS | +| CLIENT_STATISTICS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | @@ -286,6 +307,7 @@ Database: INFORMATION_SCHEMA | FILES | | GLOBAL_STATUS | | GLOBAL_VARIABLES | +| INDEX_STATISTICS | | KEY_COLUMN_USAGE | | PARTITIONS | | PLUGINS | @@ -301,8 +323,10 @@ Database: INFORMATION_SCHEMA | TABLES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | +| TABLE_STATISTICS | | TRIGGERS | | USER_PRIVILEGES | +| USER_STATISTICS | | VIEWS | | INNODB_BUFFER_POOL_PAGES | | PBXT_STATISTICS | @@ -328,5 +352,5 @@ Wildcard: inf_rmation_schema +--------------------+ SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA; table_schema count(*) -information_schema 43 +information_schema 47 mysql 22 diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result index 01c81f639ab..f639ab39ed4 100644 --- a/mysql-test/r/information_schema_db.result +++ b/mysql-test/r/information_schema_db.result @@ -7,6 +7,7 @@ Tables_in_information_schema (T%) TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES +TABLE_STATISTICS TRIGGERS create database `inf%`; create database mbase; diff --git a/mysql-test/r/log_slow.result b/mysql-test/r/log_slow.result index 57d12a64f5a..b6341109556 100644 --- a/mysql-test/r/log_slow.result +++ b/mysql-test/r/log_slow.result @@ -56,5 +56,6 @@ last_insert_id int(11) NO NULL insert_id int(11) NO NULL server_id int(10) unsigned NO NULL sql_text mediumtext NO NULL +flush slow query logs; set @@log_slow_filter=default; set @@log_slow_verbosity=default; diff --git a/mysql-test/r/status_user.result b/mysql-test/r/status_user.result new file mode 100644 index 00000000000..afd736927aa --- /dev/null +++ b/mysql-test/r/status_user.result @@ -0,0 +1,166 @@ +DROP TABLE IF EXISTS t1; +select variable_value from information_schema.global_status where variable_name="handler_read_key" into @global_read_key; +show columns from information_schema.client_statistics; +Field Type Null Key Default Extra +CLIENT varchar(64) NO +TOTAL_CONNECTIONS int(21) NO 0 +CONCURRENT_CONNECTIONS int(21) NO 0 +CONNECTED_TIME int(21) NO 0 +BUSY_TIME double NO 0 +CPU_TIME double NO 0 +BYTES_RECEIVED int(21) NO 0 +BYTES_SENT int(21) NO 0 +BINLOG_BYTES_WRITTEN int(21) NO 0 +ROWS_READ int(21) NO 0 +ROWS_SENT int(21) NO 0 +ROWS_DELETED int(21) NO 0 +ROWS_INSERTED int(21) NO 0 +ROWS_UPDATED int(21) NO 0 +SELECT_COMMANDS int(21) NO 0 +UPDATE_COMMANDS int(21) NO 0 +OTHER_COMMANDS int(21) NO 0 +COMMIT_TRANSACTIONS int(21) NO 0 +ROLLBACK_TRANSACTIONS int(21) NO 0 +DENIED_CONNECTIONS int(21) NO 0 +LOST_CONNECTIONS int(21) NO 0 +ACCESS_DENIED int(21) NO 0 +EMPTY_QUERIES int(21) NO 0 +show columns from information_schema.user_statistics; +Field Type Null Key Default Extra +USER varchar(48) NO +TOTAL_CONNECTIONS int(21) NO 0 +CONCURRENT_CONNECTIONS int(21) NO 0 +CONNECTED_TIME int(21) NO 0 +BUSY_TIME double NO 0 +CPU_TIME double NO 0 +BYTES_RECEIVED int(21) NO 0 +BYTES_SENT int(21) NO 0 +BINLOG_BYTES_WRITTEN int(21) NO 0 +ROWS_READ int(21) NO 0 +ROWS_SENT int(21) NO 0 +ROWS_DELETED int(21) NO 0 +ROWS_INSERTED int(21) NO 0 +ROWS_UPDATED int(21) NO 0 +SELECT_COMMANDS int(21) NO 0 +UPDATE_COMMANDS int(21) NO 0 +OTHER_COMMANDS int(21) NO 0 +COMMIT_TRANSACTIONS int(21) NO 0 +ROLLBACK_TRANSACTIONS int(21) NO 0 +DENIED_CONNECTIONS int(21) NO 0 +LOST_CONNECTIONS int(21) NO 0 +ACCESS_DENIED int(21) NO 0 +EMPTY_QUERIES int(21) NO 0 +show columns from information_schema.index_statistics; +Field Type Null Key Default Extra +TABLE_SCHEMA varchar(192) NO +TABLE_NAME varchar(192) NO +INDEX_NAME varchar(192) NO +ROWS_READ int(21) NO 0 +show columns from information_schema.table_statistics; +Field Type Null Key Default Extra +TABLE_SCHEMA varchar(192) NO +TABLE_NAME varchar(192) NO +ROWS_READ int(21) NO 0 +ROWS_CHANGED int(21) NO 0 +ROWS_CHANGED_X_INDEXES int(21) NO 0 +set @save_general_log=@@global.general_log; +set @@global.general_log=0; +set @@global.userstat=1; +flush status; +create table t1 (a int, primary key (a), b int default 0) engine=myisam; +insert into t1 (a) values (1),(2),(3),(4); +update t1 set b=1; +update t1 set b=5 where a=2; +delete from t1 where a=3; +/* Empty query */ +select * from t1 where a=999; +a b +drop table t1; +create table t1 (a int, primary key (a), b int default 0) engine=innodb; +begin; +insert into t1 values(1,1); +commit; +begin; +insert into t1 values(2,2); +commit; +begin; +insert into t1 values(3,3); +rollback; +drop table t1; +select sleep(1); +sleep(1) +0 +show status like "rows%"; +Variable_name Value +Rows_read 6 +Rows_sent 1 +show status like "ha%"; +Variable_name Value +Handler_commit 10 +Handler_delete 1 +Handler_discover 0 +Handler_prepare 10 +Handler_read_first 0 +Handler_read_key 3 +Handler_read_next 0 +Handler_read_prev 0 +Handler_read_rnd 0 +Handler_read_rnd_next 5 +Handler_rollback 2 +Handler_savepoint 0 +Handler_savepoint_rollback 0 +Handler_update 5 +Handler_write 7 +select variable_value - @global_read_key as "handler_read_key" from information_schema.global_status where variable_name="handler_read_key"; +handler_read_key +3 +set @@global.userstat=0; +select * from information_schema.index_statistics; +TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ +test t1 PRIMARY 2 +select * from information_schema.table_statistics; +TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES +test t1 6 13 13 +show table_statistics; +Table_schema Table_name Rows_read Rows_changed Rows_changed_x_#indexes +test t1 6 13 13 +show index_statistics; +Table_schema Table_name Index_name Rows_read +test t1 PRIMARY 2 +select TOTAL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, +ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, +UPDATE_COMMANDS, OTHER_COMMANDS, COMMIT_TRANSACTIONS, +ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, +ACCESS_DENIED, EMPTY_QUERIES from information_schema.client_statistics; +TOTAL_CONNECTIONS CONCURRENT_CONNECTIONS ROWS_READ ROWS_SENT ROWS_DELETED ROWS_INSERTED ROWS_UPDATED SELECT_COMMANDS UPDATE_COMMANDS OTHER_COMMANDS COMMIT_TRANSACTIONS ROLLBACK_TRANSACTIONS DENIED_CONNECTIONS LOST_CONNECTIONS ACCESS_DENIED EMPTY_QUERIES +1 0 6 2 1 8 5 3 11 9 10 2 0 0 0 1 +select TOTAL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, +ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, +UPDATE_COMMANDS, OTHER_COMMANDS, COMMIT_TRANSACTIONS, +ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, +ACCESS_DENIED, EMPTY_QUERIES from information_schema.user_statistics; +TOTAL_CONNECTIONS CONCURRENT_CONNECTIONS ROWS_READ ROWS_SENT ROWS_DELETED ROWS_INSERTED ROWS_UPDATED SELECT_COMMANDS UPDATE_COMMANDS OTHER_COMMANDS COMMIT_TRANSACTIONS ROLLBACK_TRANSACTIONS DENIED_CONNECTIONS LOST_CONNECTIONS ACCESS_DENIED EMPTY_QUERIES +1 0 6 2 1 8 5 3 11 9 10 2 0 0 0 1 +flush table_statistics; +flush index_statistics; +select * from information_schema.index_statistics; +TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ +select * from information_schema.table_statistics; +TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES +show status like "%statistics%"; +Variable_name Value +Com_show_client_statistics 0 +Com_show_index_statistics 1 +Com_show_table_statistics 1 +Com_show_user_statistics 0 +select connected_time <> 0, busy_time <> 0, bytes_received <> 0, +bytes_sent <> 0, binlog_bytes_written <> 0 +from information_schema.user_statistics; +connected_time <> 0 busy_time <> 0 bytes_received <> 0 bytes_sent <> 0 binlog_bytes_written <> 0 +1 1 1 1 1 +select connected_time <> 0, busy_time <> 0, bytes_received <> 0, +bytes_sent <> 0, binlog_bytes_written <> 0 +from information_schema.client_statistics; +connected_time <> 0 busy_time <> 0 bytes_received <> 0 bytes_sent <> 0 binlog_bytes_written <> 0 +1 1 1 1 1 +set @@global.general_log=@save_general_log; diff --git a/mysql-test/t/log_slow.test b/mysql-test/t/log_slow.test index 303d5bf8deb..d624e9f2520 100644 --- a/mysql-test/t/log_slow.test +++ b/mysql-test/t/log_slow.test @@ -36,6 +36,12 @@ select @@log_slow_verbosity; show fields from mysql.slow_log; +# +# Check flush command +# + +flush slow query logs; + # Reset used variables set @@log_slow_filter=default; diff --git a/mysql-test/t/status_user-master.opt b/mysql-test/t/status_user-master.opt new file mode 100644 index 00000000000..cef79bc8585 --- /dev/null +++ b/mysql-test/t/status_user-master.opt @@ -0,0 +1 @@ +--force-restart diff --git a/mysql-test/t/status_user.test b/mysql-test/t/status_user.test new file mode 100644 index 00000000000..1c011828237 --- /dev/null +++ b/mysql-test/t/status_user.test @@ -0,0 +1,97 @@ +# +# Testing of user status (the userstat variable). +# Note that this test requires a fresh restart to not problems with +# old status + +-- source include/have_innodb.inc +-- source include/have_log_bin.inc + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +select variable_value from information_schema.global_status where variable_name="handler_read_key" into @global_read_key; +show columns from information_schema.client_statistics; +show columns from information_schema.user_statistics; +show columns from information_schema.index_statistics; +show columns from information_schema.table_statistics; + +# Disable logging to get right number of writes into the tables. +set @save_general_log=@@global.general_log; +set @@global.general_log=0; +set @@global.userstat=1; +flush status; + +create table t1 (a int, primary key (a), b int default 0) engine=myisam; +insert into t1 (a) values (1),(2),(3),(4); +update t1 set b=1; +update t1 set b=5 where a=2; +delete from t1 where a=3; + +/* Empty query */ +select * from t1 where a=999; + +drop table t1; + +# +# Test the commit and rollback are counted +# + +create table t1 (a int, primary key (a), b int default 0) engine=innodb; +begin; +insert into t1 values(1,1); +commit; +begin; +insert into t1 values(2,2); +commit; +begin; +insert into t1 values(3,3); +rollback; +drop table t1; + +select sleep(1); + +show status like "rows%"; +show status like "ha%"; +select variable_value - @global_read_key as "handler_read_key" from information_schema.global_status where variable_name="handler_read_key"; + +# Ensure that the following commands doesn't change statistics + +set @@global.userstat=0; + +# +# Check that we got right statistics +# +select * from information_schema.index_statistics; +select * from information_schema.table_statistics; +show table_statistics; +show index_statistics; +select TOTAL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, + ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, + UPDATE_COMMANDS, OTHER_COMMANDS, COMMIT_TRANSACTIONS, + ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, + ACCESS_DENIED, EMPTY_QUERIES from information_schema.client_statistics; +select TOTAL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, + ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, + UPDATE_COMMANDS, OTHER_COMMANDS, COMMIT_TRANSACTIONS, + ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, + ACCESS_DENIED, EMPTY_QUERIES from information_schema.user_statistics; +flush table_statistics; +flush index_statistics; +select * from information_schema.index_statistics; +select * from information_schema.table_statistics; +show status like "%statistics%"; + +# +# Test that some variables are not 0 +# + +select connected_time <> 0, busy_time <> 0, bytes_received <> 0, + bytes_sent <> 0, binlog_bytes_written <> 0 + from information_schema.user_statistics; +select connected_time <> 0, busy_time <> 0, bytes_received <> 0, + bytes_sent <> 0, binlog_bytes_written <> 0 + from information_schema.client_statistics; + +# Cleanup +set @@global.general_log=@save_general_log; |