# Performance schema tests, for SX-lock # Note that only Innodb provides instrumented SX-locks, # so this test depends largely on the innodb instrumentation. --source include/not_embedded.inc --source include/have_perfschema.inc --source include/have_innodb.inc UPDATE performance_schema.setup_instruments SET enabled = 'NO', timed = 'YES'; UPDATE performance_schema.setup_instruments SET enabled = 'YES' WHERE name like 'wait/synch/sxlock/%'; UPDATE performance_schema.setup_instruments SET enabled = 'YES' WHERE name like 'wait/synch/rwlock/innodb/%'; SELECT DISTINCT name FROM performance_schema.setup_instruments WHERE name LIKE 'wait/synch/rwlock/innodb/%' AND name!='wait/synch/rwlock/innodb/btr_search_latch' ORDER BY name; TRUNCATE TABLE performance_schema.events_waits_history_long; TRUNCATE TABLE performance_schema.events_waits_history; TRUNCATE TABLE performance_schema.events_waits_current; # Check some SX-locks classes are instrumented select name from performance_schema.setup_instruments where name like "wait/synch/sxlock/%" order by name; # Check some SX-locks instances are instrumented SELECT DISTINCT name FROM performance_schema.rwlock_instances WHERE name LIKE 'wait/synch/sxlock/innodb/%' ORDER BY name; # Some Innodb payload, to produce data create table t1(a int) engine=innodb; begin; insert into t1 values (1), (2), (3); insert into t1 values (1), (2), (3); insert into t1 values (1), (2), (3); commit; drop table t1; # Make sure some rw-lock operations have been executed # (there will only occasionally be waits on some rw-locks) SELECT DISTINCT event_name FROM performance_schema.events_waits_history_long WHERE event_name LIKE 'wait/synch/rwlock/innodb/%' AND event_name NOT IN ('wait/synch/rwlock/innodb/btr_search_latch', 'wait/synch/rwlock/innodb/dict_operation_lock', 'wait/synch/rwlock/innodb/trx_rseg_latch', 'wait/synch/rwlock/innodb/trx_purge_latch') ORDER BY event_name; # Make sure some shared_lock operations have been executed SELECT event_name FROM performance_schema.events_waits_history_long WHERE event_name = 'wait/synch/sxlock/innodb/index_tree_rw_lock' AND operation IN ('try_shared_lock','shared_lock') LIMIT 1; # Make sure some exclusive_lock operations have been executed SELECT event_name from performance_schema.events_waits_history_long WHERE event_name = 'wait/synch/sxlock/innodb/index_tree_rw_lock' AND operation IN ('try_exclusive_lock','exclusive_lock') LIMIT 1; # Cleanup UPDATE performance_schema.setup_instruments SET enabled = 'YES', timed = 'YES';