diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
commit | 3f619478f796eddbba6e39502fe941b285dd97b1 (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/perfschema/include/table_aggregate_load.inc | |
parent | Initial commit. (diff) | |
download | mariadb-upstream.tar.xz mariadb-upstream.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/perfschema/include/table_aggregate_load.inc')
-rw-r--r-- | mysql-test/suite/perfschema/include/table_aggregate_load.inc | 532 |
1 files changed, 532 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/include/table_aggregate_load.inc b/mysql-test/suite/perfschema/include/table_aggregate_load.inc new file mode 100644 index 00000000..9d757617 --- /dev/null +++ b/mysql-test/suite/perfschema/include/table_aggregate_load.inc @@ -0,0 +1,532 @@ +# Tests for the performance schema +# + +# See comments in include/table_aggregate_setup.inc +# +# Notes about the optimizer and query plans: +# The following statement +# SELECT * from t1 where b=5; +# can be executed either: +# - by using the index "index_b" on column b +# - by using a full table scan and the where clause. +# Which plan is used can be unpredictable. +# To ensure that the index is really used, +# so that table io against the index is measured, +# the payload in this test uses: +# SELECT * from t1 force index(index_b) where b=5; +# + +# Display the current setup used + +select * from performance_schema.setup_actors + order by USER, HOST, ROLE; + +select * from performance_schema.setup_objects + order by object_type, object_schema, object_name; + +select * from performance_schema.setup_consumers; + +# General cleanup + +flush tables; + +truncate performance_schema.objects_summary_global_by_type; +truncate performance_schema.table_io_waits_summary_by_index_usage; +truncate performance_schema.table_io_waits_summary_by_table; +truncate performance_schema.table_lock_waits_summary_by_table; +truncate performance_schema.events_waits_summary_by_thread_by_event_name; +truncate performance_schema.events_waits_summary_by_account_by_event_name; +truncate performance_schema.events_waits_summary_by_user_by_event_name; +truncate performance_schema.events_waits_summary_by_host_by_event_name; +truncate performance_schema.events_waits_summary_global_by_event_name; +truncate performance_schema.events_waits_history_long; + +# Check the configuration is ok +# We don't print this as it causes too many changes in test cases if +# one variable changes value +#show variables where +# `Variable_name` != "performance_schema_max_statement_classes" and +# `Variable_name` like "performance_schema%"; +#show status like "performance_schema%"; + +echo "================== Step 1 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +# Notes about this test +# + +connect (con1, localhost, user1, , ); +select concat(current_user(), " is connected") as status; + +--connection default + +echo "================== Step 2 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection con1 + +insert into test.t1 set a=101, b=1, c=1; +insert into test.t2 set a=102, b=2, c=2; +insert into test.t2 set a=103, b=3, c=3; +insert into test.t3 set a=104, b=4, c=4; +insert into test.t3 set a=105, b=5, c=5; +insert into test.t3 set a=106, b=6, c=6; +select * from test.t1; +select * from test.t2; +select * from test.t3; +# Full table scan +update test.t1 set d=d+1; +update test.t2 set d=d+1; +update test.t3 set d=d+1; +# Update with PK +update test.t1 set d=d+1 where a=101; +update test.t2 set d=d+1 where a=101; +update test.t3 set d=d+1 where a=101; +# select with index +select * from test.t1 force index(index_b) where b=5; +select * from test.t2 force index(index_b) where b=5; +select * from test.t3 force index(index_b) where b=5; + +--connection default + +echo "================== Step 3-A =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection con1 + +# This cause aggregation, so that index names are finally recorded +flush tables; + +echo "================== con1 FLUSH =================="; + +--connection default + +echo "================== Step 3-B =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +# Debugging helpers +# select * from performance_schema.events_waits_history_long; +# select PROCESSLIST_USER, PROCESSLIST_HOST, INSTRUMENTED from performance_schema.threads; + +connect (con2, localhost, user2, , ); +select concat(current_user(), " is connected") as status; + +--connection default + +echo "================== Step 4 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection con2 + +insert into test.t1 set a=201, b=1, c=1; +insert into test.t2 set a=202, b=2, c=2; +insert into test.t2 set a=203, b=3, c=3; +insert into test.t3 set a=204, b=4, c=4; +insert into test.t3 set a=205, b=5, c=5; +insert into test.t3 set a=206, b=6, c=6; +select * from test.t1; +select * from test.t2; +select * from test.t3; +# Full table scan +update test.t1 set d=d+1; +update test.t2 set d=d+1; +update test.t3 set d=d+1; +# Update with PK +update test.t1 set d=d+1 where a=201; +update test.t2 set d=d+1 where a=201; +update test.t3 set d=d+1 where a=201; +# select with index +select * from test.t1 force index(index_b) where b=5; +select * from test.t2 force index(index_b) where b=5; +select * from test.t3 force index(index_b) where b=5; + +--connection default + +echo "================== Step 5 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +connect (con3, localhost, user3, , ); +select concat(current_user(), " is connected") as status; + +--connection default + +echo "================== Step 6 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection con3 + +insert into test.t1 set a=301, b=1, c=1; +insert into test.t2 set a=302, b=2, c=2; +insert into test.t2 set a=303, b=3, c=3; +insert into test.t3 set a=304, b=4, c=4; +insert into test.t3 set a=305, b=5, c=5; +insert into test.t3 set a=306, b=6, c=6; +select * from test.t1; +select * from test.t2; +select * from test.t3; +# Full table scan +update test.t1 set d=d+1; +update test.t2 set d=d+1; +update test.t3 set d=d+1; +# Update with PK +update test.t1 set d=d+1 where a=301; +update test.t2 set d=d+1 where a=301; +update test.t3 set d=d+1 where a=301; +# select with index +select * from test.t1 force index(index_b) where b=5; +select * from test.t2 force index(index_b) where b=5; +select * from test.t3 force index(index_b) where b=5; + +--connection default + +echo "================== Step 7 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +connect (con4, localhost, user4, , ); +select concat(current_user(), " is connected") as status; + +--connection default + +echo "================== Step 8 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection con4 + +insert into test.t1 set a=401, b=1, c=1; +insert into test.t2 set a=402, b=2, c=2; +insert into test.t2 set a=403, b=3, c=3; +insert into test.t3 set a=404, b=4, c=4; +insert into test.t3 set a=405, b=5, c=5; +insert into test.t3 set a=406, b=6, c=6; +select * from test.t1; +select * from test.t2; +select * from test.t3; +# Full table scan +update test.t1 set d=d+1; +update test.t2 set d=d+1; +update test.t3 set d=d+1; +# Update with PK +update test.t1 set d=d+1 where a=401; +update test.t2 set d=d+1 where a=401; +update test.t3 set d=d+1 where a=401; +# select with index +select * from test.t1 force index(index_b) where b=5; +select * from test.t2 force index(index_b) where b=5; +select * from test.t3 force index(index_b) where b=5; + +--connection default + +echo "================== Step 9 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection con1 + +lock tables test.t1 read, test.t2 read, test.t3 read; +unlock tables; +lock tables test.t1 write, test.t2 write, test.t3 write; +unlock tables; + +--connection default + +echo "================== Step 10 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection default + +flush tables; + +echo "================== flush marker =================="; + +echo "================== Step 11 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +set global read_only=1; +set global read_only=0; + +echo "================== global read_only marker =================="; + +echo "================== Step 12 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--disconnect con1 + +# Wait for the disconnect to complete +let $wait_condition= + select count(*) = 0 from performance_schema.threads + where `TYPE`='FOREGROUND' and PROCESSLIST_USER= 'user1'; +--source include/wait_condition.inc + +echo "================== Step 13 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--disconnect con2 + +# Wait for the disconnect to complete +let $wait_condition= + select count(*) = 0 from performance_schema.threads + where `TYPE`='FOREGROUND' and PROCESSLIST_USER= 'user2'; +--source include/wait_condition.inc + +echo "================== Step 14 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--disconnect con3 + +# Wait for the disconnect to complete +let $wait_condition= + select count(*) = 0 from performance_schema.threads + where `TYPE`='FOREGROUND' and PROCESSLIST_USER= 'user3'; +--source include/wait_condition.inc + +echo "================== Step 15 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--disconnect con4 + +# Wait for the disconnect to complete +let $wait_condition= + select count(*) = 0 from performance_schema.threads + where `TYPE`='FOREGROUND' and PROCESSLIST_USER= 'user4'; +--source include/wait_condition.inc + +echo "================== Step 16 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +--connection default + +truncate performance_schema.events_waits_summary_by_thread_by_event_name; + +echo "================== BY_THREAD truncated =================="; + +echo "================== Step 17 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +truncate performance_schema.events_waits_summary_by_account_by_event_name; + +echo "================== BY_ACCOUNT truncated =================="; + +echo "================== Step 18 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +truncate performance_schema.events_waits_summary_by_user_by_event_name; + +echo "================== BY_USER truncated =================="; + +echo "================== Step 19 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +truncate performance_schema.events_waits_summary_by_host_by_event_name; + +echo "================== BY_HOST truncated =================="; + +echo "================== Step 21 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +truncate performance_schema.events_waits_summary_global_by_event_name; + +echo "================== GLOBAL truncated =================="; + +echo "================== Step 21 =================="; +call dump_thread(); +execute dump_waits_account; +execute dump_waits_user; +execute dump_waits_host; +execute dump_waits_global; +execute dump_waits_history; +execute dump_waits_index_io; +execute dump_waits_table_io; +execute dump_waits_table_lock; +execute dump_objects_summary; + +# On test failures, may help to track the root cause +show global status like "performance_schema%"; + |