Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/monitor.test |
# This is the test for Metrics Monitor Table feature. # Test the metrics monitor system's control system # and counter accuracy. --source include/have_innodb.inc set global innodb_monitor_disable = All; # Test turn on/off the monitor counter with "all" option # By default, they will be off select name, status from information_schema.innodb_metrics; # Turn on all monitor counters set global innodb_monitor_enable = all; # status should all change to "enabled" select name from information_schema.innodb_metrics where status!='enabled'; # Test wrong argument to the global configure option --error ER_WRONG_VALUE_FOR_VAR set global innodb_monitor_enable = aaa; # We require a valid monitor counter/module name. There is no default # counter name or module. A warning will be printed asking user to # specify a valid counter name. #--disable_warnings #set global innodb_monitor_enable = default; #--enable_warnings # Turn off all monitor counters, option name should be case # insensitive set global innodb_monitor_disable = All; # status should all change to "disabled" select name from information_schema.innodb_metrics where status!='disabled'; # Reset all counter values set global innodb_monitor_reset_all = all; # count should all change to 0 select name from information_schema.innodb_metrics where count!=0; # Test wildcard match, turn on all counters contain string "lock" set global innodb_monitor_enable = "%lock%"; # All lock related counter should be enabled select name from information_schema.innodb_metrics where status != IF(name like "%lock%", 'enabled', 'disabled'); # Disable them set global innodb_monitor_disable = "%lock%"; # All lock related counter should be disabled select name, status from information_schema.innodb_metrics where name like "%lock%"; # No match for "%lock*" --error ER_WRONG_VALUE_FOR_VAR set global innodb_monitor_enable = "%lock*"; # All counters will be turned on with wildcard match string with all "%" set global innodb_monitor_enable="%%%%%%%%%%%%%%%%%%%%%%%%%%%"; select name from information_schema.innodb_metrics where status!='enabled'; # Turn off all counters set global innodb_monitor_disable="%%%%%"; select name from information_schema.innodb_metrics where status!='disabled'; # One more round testing. All counters will be turned on with # single wildcard character "%" set global innodb_monitor_enable="%"; select name from information_schema.innodb_metrics where status!='enabled'; # Turn off all the counters with "%_%" set global innodb_monitor_disable="%_%"; select name from information_schema.innodb_metrics where status!='disabled'; # Turn on all counters start with "log" set global innodb_monitor_enable="log%%%%"; select name from information_schema.innodb_metrics where status != IF(name like "log%", 'enabled', 'disabled'); # Turn on counters "os_data_fsync" with wildcard match "os_%a_fs_ncs", "_" # is single character wildcard match word set global innodb_monitor_enable="os_%a_fs_ncs"; # Turn on counters whose name contains "os" and "pending" with # wildcard match "os%pending%" set global innodb_monitor_enable="os%pending%"; select name, status from information_schema.innodb_metrics where name like "os%"; # Empty string is an invalid option --error ER_WRONG_VALUE_FOR_VAR set global innodb_monitor_enable=""; --error ER_WRONG_VALUE_FOR_VAR set global innodb_monitor_enable="_"; # Reset counters only in "module_metadata" module set global innodb_monitor_disable = module_metadata; set global innodb_monitor_reset_all = module_metadata; # Only turn on "table_open" counter set global innodb_monitor_enable = metadata_table_handles_opened; # Create a new table to test "metadata_table_handles_opened" counter create table monitor_test(col int) engine = innodb; # This will open the monitor_test table select * from monitor_test; # "metadata_table_handles_opened" should increment by 1 select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # Reset the counter value while counter is still on (started) # This will reset value "count_reset" but not # "count" set global innodb_monitor_reset = metadata_table_handles_opened; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # re-create table again to increment "metadata_table_handles_opened" again drop table monitor_test; # Create a new table to test "metadata_table_handles_opened" counter create table monitor_test(col int) engine = innodb; select * from monitor_test; # "metadata_table_handles_opened" should increment select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # Cannot reset all monitor value while the counter is on set global innodb_monitor_reset_all = metadata_table_handles_opened; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # Turn off the counter "metadata_table_handles_opened" set global innodb_monitor_disable = metadata_table_handles_opened; # Reset the counter value while counter is off (disabled) set global innodb_monitor_reset = metadata_table_handles_opened; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # re-create table again. Since monitor is off, "metadata_table_handles_opened" # should not be incremented drop table monitor_test; # Create a new table to test "metadata_table_handles_opened" counter create table monitor_test(col int) engine = innodb; # "metadata_table_handles_opened" should increment select * from monitor_test; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # Reset all the counters, include those counter *_since_start set global innodb_monitor_reset_all = metadata_table_handles_opened; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # Turn on "table_open" counter again set global innodb_monitor_enable = metadata_table_handles_opened; # Test metadata_table_handles_opened again to see if it is working correctly # after above round of turning on/off/reset drop table monitor_test; # Create a new table to test "metadata_table_handles_opened" counter create table monitor_test(col int) engine = innodb stats_persistent=0; select * from monitor_test; # "metadata_table_handles_opened" should increment select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_opened"; # Test counter "metadata_table_handles_closed", # create index will close the old handle set global innodb_monitor_enable = metadata_table_handles_closed; create index idx on monitor_test(col); select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name = "metadata_table_handles_closed"; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "metadata%"; # Reset counters only in "module_metadata" module set global innodb_monitor_disable = module_metadata; set global innodb_monitor_reset = module_metadata; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "metadata%"; set global innodb_monitor_reset_all = module_metadata; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "metadata%"; # Test Transaction Module set global innodb_monitor_enable = module_trx; begin; insert into monitor_test values(9); commit; begin; insert into monitor_test values(9); rollback; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "trx_rollbacks" or name like "trx_active_transactions"; set global innodb_monitor_disable = module_trx; # Test DML Module set global innodb_monitor_enable = module_dml; insert into monitor_test values(9); update monitor_test set col = 10 where col = 9; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; delete from monitor_test; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; # test reset counter while the counter is on set global innodb_monitor_reset = module_dml; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; # insert/delete some rows after the reset insert into monitor_test values(9); insert into monitor_test values(1); delete from monitor_test; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; # We do not allow reset_all while the counter is on, nothing # should be reset here set global innodb_monitor_reset_all = module_dml; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; # Turn off the counter set global innodb_monitor_disable = module_dml; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; # Reset all counter values set global innodb_monitor_reset_all = module_dml; select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; # Open individual counter "dml_inserts" set global innodb_monitor_enable = dml_inserts; insert into monitor_test values(9); insert into monitor_test values(1); delete from monitor_test; # Only counter "dml_inserts" should be updated select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "dml%"; set global innodb_monitor_disable = module_dml; drop table monitor_test; set global innodb_monitor_enable = file_num_open_files; # Counters are unpredictable when innodb-file-per-table is on --replace_column 2 # 3 # 4 # 5 # 6 # 7 # select name, max_count, min_count, count, max_count_reset, min_count_reset, count_reset, status from information_schema.innodb_metrics where name like "file_num_open_files"; set global innodb_monitor_disable = file_num_open_files; # Test ICP module counters set global innodb_monitor_enable = "icp%"; create table monitor_test(a char(3), b int, c char(2), primary key (a(1), c(1)), key(b)) engine = innodb; insert into monitor_test values("13", 2, "aa"); select a from monitor_test where b < 1 for update; # should have icp_attempts = 1 and icp_out_of_range = 1 select name, count from information_schema.innodb_metrics where name like "icp%"; # should have icp_attempts = 2 and icp_match = 1 select a from monitor_test where b < 3 for update; select name, count from information_schema.innodb_metrics where name like "icp%"; drop table monitor_test; set global innodb_monitor_disable = all; set global innodb_monitor_reset_all = all; # Test for bug #13966091 select 1 from `information_schema`.`INNODB_METRICS` where case (1) when (1) then (AVG_COUNT_RESET) else (1) end; -- disable_warnings set global innodb_monitor_enable = default; set global innodb_monitor_disable = default; set global innodb_monitor_reset = default; set global innodb_monitor_reset_all = default; -- enable_warnings --echo # --echo # Bug#22576241 SETTING INNODB_MONITOR_ENABLE TO ALL DOES NOT ENABLE ALL --echo # MONITORS --echo # CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; let $innodb_monitor_enable = `SELECT @@innodb_monitor_enable`; --replace_regex /[1-9]/NNNN/ SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE 'buffer_page_written_index_leaf'; SET GLOBAL innodb_monitor_enable='module_buffer_page'; INSERT INTO t1 VALUES (1), (2), (3), (4); FLUSH TABLES t1 FOR EXPORT; UNLOCK TABLES; --replace_regex /[1-9]/NNNN/ SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE 'buffer_page_written_index_leaf'; SET GLOBAL innodb_monitor_disable='module_buffer_page'; SET GLOBAL innodb_monitor_reset_all='module_buffer_page'; --replace_regex /[1-9]/NNNN/ SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE 'buffer_page_written_index_leaf'; SET GLOBAL innodb_monitor_enable='%'; INSERT INTO t1 VALUES (5), (6), (7), (8); FLUSH TABLES t1 FOR EXPORT; UNLOCK TABLES; --replace_regex /[1-9]/NNNN/ SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE 'buffer_page_written_index_leaf'; SET GLOBAL innodb_monitor_disable='%'; SET GLOBAL innodb_monitor_reset_all='%'; --replace_regex /[1-9]/NNNN/ SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE 'buffer_page_written_index_leaf'; SET GLOBAL innodb_monitor_enable='ALL'; INSERT INTO t1 VALUES (9), (10), (11), (12); FLUSH TABLES t1 FOR EXPORT; UNLOCK TABLES; --replace_regex /[1-9]/NNNN/ SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE 'buffer_page_written_index_leaf'; --disable_warnings SET GLOBAL innodb_monitor_enable=default; SET GLOBAL innodb_monitor_disable=default; SET GLOBAL innodb_monitor_reset_all=default; --enable_warnings DROP TABLE t1;