Skip to content

Commit ce7b2a1

Browse files
Rongrong Zhongfacebook-github-bot
authored andcommitted
Bug #68220 innodb_rows_updated is misleading on slave
Summary: Added innodb_system_rows_read/inserted/updated/deleted counters that are the equivalent of innodb_rows_* but that only account for changes made to system databases (mysql, information_schame and preformance_schema). These counters will be used on slaves to differentiated the updates made on system databases from those made on user databases. innodb_rows_* status counters are not updated when innodb_system_rows_* are updated. Reference Patch: d0ef2d9 Originally Reviewed By: rudradevbasak, santoshb Reviewed By: Tema Differential Revision: D7245493 fbshipit-source-id: 7d6fa2f
1 parent 5a26b4b commit ce7b2a1

20 files changed

+714
-23
lines changed

mysql-test/suite/innodb/r/innodb.result

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1831,14 +1831,14 @@ variable_value
18311831
SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
18321832
variable_value
18331833
{checked_valid}
1834-
SELECT variable_value - @innodb_rows_deleted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
1835-
variable_value - @innodb_rows_deleted_orig
1834+
SELECT sum(variable_value) - @innodb_rows_deleted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_deleted';
1835+
sum(variable_value) - @innodb_rows_deleted_orig
18361836
1830
1837-
SELECT variable_value - @innodb_rows_inserted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
1838-
variable_value - @innodb_rows_inserted_orig
1837+
SELECT sum(variable_value) - @innodb_rows_inserted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_inserted';
1838+
sum(variable_value) - @innodb_rows_inserted_orig
18391839
2733
1840-
SELECT variable_value - @innodb_rows_updated_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
1841-
variable_value - @innodb_rows_updated_orig
1840+
SELECT sum(variable_value) - @innodb_rows_updated_orig FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_updated';
1841+
sum(variable_value) - @innodb_rows_updated_orig
18421842
2635
18431843
SELECT variable_value - @innodb_row_lock_waits_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
18441844
variable_value - @innodb_row_lock_waits_orig

mysql-test/suite/innodb/r/monitor.result

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,10 @@ dml_reads disabled
280280
dml_inserts disabled
281281
dml_deletes disabled
282282
dml_updates disabled
283+
dml_system_reads disabled
284+
dml_system_inserts disabled
285+
dml_system_deletes disabled
286+
dml_system_updates disabled
283287
ddl_background_drop_tables disabled
284288
ddl_online_create_index disabled
285289
ddl_pending_alter_table disabled
@@ -520,6 +524,10 @@ dml_reads 4 NULL 4 4 NULL 4 enabled
520524
dml_inserts 1 NULL 1 1 NULL 1 enabled
521525
dml_deletes 0 NULL 0 0 NULL 0 enabled
522526
dml_updates 2 NULL 2 2 NULL 2 enabled
527+
dml_system_reads 0 NULL 0 0 NULL 0 enabled
528+
dml_system_inserts 0 NULL 0 0 NULL 0 enabled
529+
dml_system_deletes 0 NULL 0 0 NULL 0 enabled
530+
dml_system_updates 0 NULL 0 0 NULL 0 enabled
523531
delete from monitor_test;
524532
select name, max_count, min_count, count,
525533
max_count_reset, min_count_reset, count_reset, status
@@ -530,6 +538,10 @@ dml_reads 6 NULL 6 6 NULL 6 enabled
530538
dml_inserts 1 NULL 1 1 NULL 1 enabled
531539
dml_deletes 2 NULL 2 2 NULL 2 enabled
532540
dml_updates 2 NULL 2 2 NULL 2 enabled
541+
dml_system_reads 0 NULL 0 0 NULL 0 enabled
542+
dml_system_inserts 0 NULL 0 0 NULL 0 enabled
543+
dml_system_deletes 0 NULL 0 0 NULL 0 enabled
544+
dml_system_updates 0 NULL 0 0 NULL 0 enabled
533545
set global innodb_monitor_reset = module_dml;
534546
select name, max_count, min_count, count,
535547
max_count_reset, min_count_reset, count_reset, status
@@ -540,6 +552,10 @@ dml_reads 6 NULL 6 0 NULL 0 enabled
540552
dml_inserts 1 NULL 1 0 NULL 0 enabled
541553
dml_deletes 2 NULL 2 0 NULL 0 enabled
542554
dml_updates 2 NULL 2 0 NULL 0 enabled
555+
dml_system_reads 0 NULL 0 0 NULL 0 enabled
556+
dml_system_inserts 0 NULL 0 0 NULL 0 enabled
557+
dml_system_deletes 0 NULL 0 0 NULL 0 enabled
558+
dml_system_updates 0 NULL 0 0 NULL 0 enabled
543559
insert into monitor_test values(9);
544560
insert into monitor_test values(1);
545561
delete from monitor_test;
@@ -552,6 +568,10 @@ dml_reads 8 NULL 8 2 NULL 2 enabled
552568
dml_inserts 3 NULL 3 2 NULL 2 enabled
553569
dml_deletes 4 NULL 4 2 NULL 2 enabled
554570
dml_updates 2 NULL 2 0 NULL 0 enabled
571+
dml_system_reads 0 NULL 0 0 NULL 0 enabled
572+
dml_system_inserts 0 NULL 0 0 NULL 0 enabled
573+
dml_system_deletes 0 NULL 0 0 NULL 0 enabled
574+
dml_system_updates 0 NULL 0 0 NULL 0 enabled
555575
set global innodb_monitor_reset_all = module_dml;
556576
select name, max_count, min_count, count,
557577
max_count_reset, min_count_reset, count_reset, status
@@ -562,6 +582,10 @@ dml_reads 8 NULL 8 2 NULL 2 enabled
562582
dml_inserts 3 NULL 3 2 NULL 2 enabled
563583
dml_deletes 4 NULL 4 2 NULL 2 enabled
564584
dml_updates 2 NULL 2 0 NULL 0 enabled
585+
dml_system_reads 0 NULL 0 0 NULL 0 enabled
586+
dml_system_inserts 0 NULL 0 0 NULL 0 enabled
587+
dml_system_deletes 0 NULL 0 0 NULL 0 enabled
588+
dml_system_updates 0 NULL 0 0 NULL 0 enabled
565589
set global innodb_monitor_disable = module_dml;
566590
select name, max_count, min_count, count,
567591
max_count_reset, min_count_reset, count_reset, status
@@ -572,6 +596,10 @@ dml_reads 8 NULL 8 2 NULL 2 disabled
572596
dml_inserts 3 NULL 3 2 NULL 2 disabled
573597
dml_deletes 4 NULL 4 2 NULL 2 disabled
574598
dml_updates 2 NULL 2 0 NULL 0 disabled
599+
dml_system_reads 0 NULL 0 0 NULL 0 disabled
600+
dml_system_inserts 0 NULL 0 0 NULL 0 disabled
601+
dml_system_deletes 0 NULL 0 0 NULL 0 disabled
602+
dml_system_updates 0 NULL 0 0 NULL 0 disabled
575603
set global innodb_monitor_reset_all = module_dml;
576604
select name, max_count, min_count, count,
577605
max_count_reset, min_count_reset, count_reset, status
@@ -582,6 +610,10 @@ dml_reads NULL NULL 0 NULL NULL 0 disabled
582610
dml_inserts NULL NULL 0 NULL NULL 0 disabled
583611
dml_deletes NULL NULL 0 NULL NULL 0 disabled
584612
dml_updates NULL NULL 0 NULL NULL 0 disabled
613+
dml_system_reads NULL NULL 0 NULL NULL 0 disabled
614+
dml_system_inserts NULL NULL 0 NULL NULL 0 disabled
615+
dml_system_deletes NULL NULL 0 NULL NULL 0 disabled
616+
dml_system_updates NULL NULL 0 NULL NULL 0 disabled
585617
set global innodb_monitor_enable = dml_inserts;
586618
insert into monitor_test values(9);
587619
insert into monitor_test values(1);
@@ -595,6 +627,10 @@ dml_reads NULL NULL 0 NULL NULL 0 disabled
595627
dml_inserts 2 NULL 2 2 NULL 2 enabled
596628
dml_deletes NULL NULL 0 NULL NULL 0 disabled
597629
dml_updates NULL NULL 0 NULL NULL 0 disabled
630+
dml_system_reads NULL NULL 0 NULL NULL 0 disabled
631+
dml_system_inserts NULL NULL 0 NULL NULL 0 disabled
632+
dml_system_deletes NULL NULL 0 NULL NULL 0 disabled
633+
dml_system_updates NULL NULL 0 NULL NULL 0 disabled
598634
set global innodb_monitor_disable = module_dml;
599635
drop table monitor_test;
600636
set global innodb_monitor_enable = file_num_open_files;

mysql-test/suite/innodb/t/innodb.test

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ SET @innodb_thread_sleep_delay_orig = @@innodb_thread_sleep_delay;
3939
SET @innodb_thread_concurrency_orig = @@innodb_thread_concurrency;
4040

4141
--disable_warnings
42-
SET @innodb_rows_deleted_orig = (SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted');
43-
SET @innodb_rows_inserted_orig = (SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted');
44-
SET @innodb_rows_updated_orig = (SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated');
42+
SET @innodb_rows_deleted_orig = (SELECT sum(variable_value) FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_deleted');
43+
SET @innodb_rows_inserted_orig = (SELECT sum(variable_value) FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_inserted');
44+
SET @innodb_rows_updated_orig = (SELECT sum(variable_value) FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_updated');
4545
SET @innodb_row_lock_waits_orig = (SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits');
4646
SET @innodb_row_lock_current_waits_orig = (SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits');
4747
SET @innodb_row_lock_time_orig = (SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time');
@@ -1334,9 +1334,9 @@ drop table t1;
13341334
SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
13351335
--replace_result 4096 {checked_valid} 8192 {checked_valid} 16384 {checked_valid}
13361336
SELECT variable_value FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
1337-
SELECT variable_value - @innodb_rows_deleted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
1338-
SELECT variable_value - @innodb_rows_inserted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
1339-
SELECT variable_value - @innodb_rows_updated_orig FROM performance_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
1337+
SELECT sum(variable_value) - @innodb_rows_deleted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_deleted';
1338+
SELECT sum(variable_value) - @innodb_rows_inserted_orig FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_inserted';
1339+
SELECT sum(variable_value) - @innodb_rows_updated_orig FROM performance_schema.global_status WHERE LOWER(variable_name) like 'innodb%_rows_updated';
13401340
--enable_warnings
13411341

13421342
# Test for row locks InnoDB status variables.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#########################################
2+
# Author: Benjamin Renard benj@fb.com
3+
# Date: 11/15/2013
4+
# Purpose: Showing the difference between current innodb rows stats and the ones recorded at the beginning of the test
5+
# Requirements: Having @[master|slave]_[system_]rows_[read|inserted|deleted|updated] counters already created
6+
#########################################
7+
8+
--connection master
9+
--echo ==========MASTER==========
10+
11+
select variable_value into @rows_read from performance_schema.global_status where variable_name = 'innodb_rows_read';
12+
select @rows_read - @master_rows_read;
13+
select variable_value into @rows_updated from performance_schema.global_status where variable_name = 'innodb_rows_updated';
14+
select @rows_updated - @master_rows_updated;
15+
select variable_value into @rows_deleted from performance_schema.global_status where variable_name = 'innodb_rows_deleted';
16+
select @rows_deleted - @master_rows_deleted;
17+
select variable_value into @rows_inserted from performance_schema.global_status where variable_name = 'innodb_rows_inserted';
18+
select @rows_inserted - @master_rows_inserted;
19+
20+
select variable_value into @system_rows_read from performance_schema.global_status where variable_name = 'innodb_system_rows_read';
21+
select @system_rows_read - @master_system_rows_read > 0;
22+
select variable_value into @system_rows_updated from performance_schema.global_status where variable_name = 'innodb_system_rows_updated';
23+
select @system_rows_updated - @master_system_rows_updated > 0;
24+
select variable_value into @system_rows_deleted from performance_schema.global_status where variable_name = 'innodb_system_rows_deleted';
25+
select @system_rows_deleted - @master_system_rows_deleted > 0;
26+
select variable_value into @system_rows_inserted from performance_schema.global_status where variable_name = 'innodb_system_rows_inserted';
27+
select @system_rows_inserted - @master_system_rows_inserted > 0;
28+
29+
--sync_slave_with_master
30+
--echo ==========SLAVE===========
31+
32+
select variable_value into @rows_read from performance_schema.global_status where variable_name = 'innodb_rows_read';
33+
select @rows_read - @slave_rows_read;
34+
select variable_value into @rows_updated from performance_schema.global_status where variable_name = 'innodb_rows_updated';
35+
select @rows_updated - @slave_rows_updated;
36+
select variable_value into @rows_deleted from performance_schema.global_status where variable_name = 'innodb_rows_deleted';
37+
select @rows_deleted - @slave_rows_deleted;
38+
select variable_value into @rows_inserted from performance_schema.global_status where variable_name = 'innodb_rows_inserted';
39+
select @rows_inserted - @slave_rows_inserted;
40+
41+
select variable_value into @system_rows_read from performance_schema.global_status where variable_name = 'innodb_system_rows_read';
42+
select @system_rows_read - @slave_system_rows_read > 0;
43+
select variable_value into @system_rows_updated from performance_schema.global_status where variable_name = 'innodb_system_rows_updated';
44+
select @system_rows_updated - @slave_system_rows_updated > 0;
45+
select variable_value into @system_rows_deleted from performance_schema.global_status where variable_name = 'innodb_system_rows_deleted';
46+
select @system_rows_deleted - @slave_system_rows_deleted > 0;
47+
select variable_value into @system_rows_inserted from performance_schema.global_status where variable_name = 'innodb_system_rows_inserted';
48+
select @system_rows_inserted - @slave_system_rows_inserted > 0;
49+
50+
--connection master

0 commit comments

Comments
 (0)