Browse Source
MDEV-28539 Some InnoDB counters are duplicating generic SHOW STATUS
MDEV-28539 Some InnoDB counters are duplicating generic SHOW STATUS
The InnoDB srv_stats counters n_rows_updated, n_rows_deleted, n_rows_inserted, and n_rows_read are duplicating Handler_update, Handler_delete, Handler_write, and Handler_read_ counters. Updating those counters is not free, especially because some counters are furthermore split to distinguish a rare case of modifying tables in the system schema.pull/2150/head
16 changed files with 6 additions and 882 deletions
-
9mysql-test/suite/innodb/r/innodb.result
-
8mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
-
8mysql-test/suite/innodb/r/innodb_status_variables.result
-
136mysql-test/suite/innodb/r/monitor.result
-
6mysql-test/suite/innodb/t/innodb.test
-
87mysql-test/suite/innodb/t/monitor.test
-
48mysql-test/suite/rpl/include/rpl_innodb_rows_counters.inc
-
233mysql-test/suite/rpl/r/rpl_innodb_bug68220.result
-
53mysql-test/suite/rpl/t/rpl_innodb_bug68220.test
-
31storage/innobase/handler/ha_innodb.cc
-
11storage/innobase/include/srv0mon.h
-
34storage/innobase/include/srv0srv.h
-
22storage/innobase/row/row0mysql.cc
-
84storage/innobase/srv/srv0mon.cc
-
110storage/innobase/srv/srv0srv.cc
-
8storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
@ -1,48 +0,0 @@ |
|||
######################################### |
|||
# Author: Benjamin Renard benj@fb.com |
|||
# Date: 11/15/2013 |
|||
# Purpose: Showing the difference between current innodb rows stats and the ones recorded at the beginning of the test |
|||
# Requirements: Having @[master|slave]_[system_]rows_[read|inserted|deleted|updated] counters already created |
|||
######################################### |
|||
|
|||
--connection master |
|||
|
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @master_rows_read; |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @master_rows_updated; |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @master_rows_deleted; |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @master_rows_inserted; |
|||
|
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @master_system_rows_read; |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @master_system_rows_updated; |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @master_system_rows_deleted; |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @master_system_rows_inserted; |
|||
|
|||
--sync_slave_with_master |
|||
|
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @slave_rows_read; |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @slave_rows_updated; |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @slave_rows_deleted; |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @slave_rows_inserted; |
|||
|
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @slave_system_rows_read; |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @slave_system_rows_updated; |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @slave_system_rows_deleted; |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @slave_system_rows_inserted; |
|||
|
|||
--connection master |
@ -1,233 +0,0 @@ |
|||
include/master-slave.inc |
|||
[connection master] |
|||
connection master; |
|||
select variable_value into @master_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select variable_value into @master_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select variable_value into @master_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select variable_value into @master_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select variable_value into @master_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select variable_value into @master_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select variable_value into @master_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select variable_value into @master_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
connection slave; |
|||
select variable_value into @slave_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select variable_value into @slave_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select variable_value into @slave_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select variable_value into @slave_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select variable_value into @slave_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select variable_value into @slave_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select variable_value into @slave_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select variable_value into @slave_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
connection master; |
|||
CREATE DATABASE testdb; |
|||
USE testdb; |
|||
CREATE TABLE testdb.t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB; |
|||
INSERT INTO testdb.t1 VALUES (1); |
|||
connection master; |
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @master_rows_read; |
|||
@rows_read - @master_rows_read |
|||
0 |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @master_rows_updated; |
|||
@rows_updated - @master_rows_updated |
|||
0 |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @master_rows_deleted; |
|||
@rows_deleted - @master_rows_deleted |
|||
0 |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @master_rows_inserted; |
|||
@rows_inserted - @master_rows_inserted |
|||
1 |
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @master_system_rows_read; |
|||
@system_rows_read - @master_system_rows_read |
|||
0 |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @master_system_rows_updated; |
|||
@system_rows_updated - @master_system_rows_updated |
|||
0 |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @master_system_rows_deleted; |
|||
@system_rows_deleted - @master_system_rows_deleted |
|||
0 |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @master_system_rows_inserted; |
|||
@system_rows_inserted - @master_system_rows_inserted |
|||
0 |
|||
connection slave; |
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @slave_rows_read; |
|||
@rows_read - @slave_rows_read |
|||
0 |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @slave_rows_updated; |
|||
@rows_updated - @slave_rows_updated |
|||
0 |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @slave_rows_deleted; |
|||
@rows_deleted - @slave_rows_deleted |
|||
0 |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @slave_rows_inserted; |
|||
@rows_inserted - @slave_rows_inserted |
|||
1 |
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @slave_system_rows_read; |
|||
@system_rows_read - @slave_system_rows_read |
|||
0 |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @slave_system_rows_updated; |
|||
@system_rows_updated - @slave_system_rows_updated |
|||
0 |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @slave_system_rows_deleted; |
|||
@system_rows_deleted - @slave_system_rows_deleted |
|||
0 |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @slave_system_rows_inserted; |
|||
@system_rows_inserted - @slave_system_rows_inserted |
|||
0 |
|||
connection master; |
|||
UPDATE t1 SET i=2 WHERE i=1; |
|||
connection slave; |
|||
connection master; |
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @master_rows_read; |
|||
@rows_read - @master_rows_read |
|||
1 |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @master_rows_updated; |
|||
@rows_updated - @master_rows_updated |
|||
1 |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @master_rows_deleted; |
|||
@rows_deleted - @master_rows_deleted |
|||
0 |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @master_rows_inserted; |
|||
@rows_inserted - @master_rows_inserted |
|||
1 |
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @master_system_rows_read; |
|||
@system_rows_read - @master_system_rows_read |
|||
0 |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @master_system_rows_updated; |
|||
@system_rows_updated - @master_system_rows_updated |
|||
0 |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @master_system_rows_deleted; |
|||
@system_rows_deleted - @master_system_rows_deleted |
|||
0 |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @master_system_rows_inserted; |
|||
@system_rows_inserted - @master_system_rows_inserted |
|||
0 |
|||
connection slave; |
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @slave_rows_read; |
|||
@rows_read - @slave_rows_read |
|||
1 |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @slave_rows_updated; |
|||
@rows_updated - @slave_rows_updated |
|||
1 |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @slave_rows_deleted; |
|||
@rows_deleted - @slave_rows_deleted |
|||
0 |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @slave_rows_inserted; |
|||
@rows_inserted - @slave_rows_inserted |
|||
1 |
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @slave_system_rows_read; |
|||
@system_rows_read - @slave_system_rows_read |
|||
0 |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @slave_system_rows_updated; |
|||
@system_rows_updated - @slave_system_rows_updated |
|||
0 |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @slave_system_rows_deleted; |
|||
@system_rows_deleted - @slave_system_rows_deleted |
|||
0 |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @slave_system_rows_inserted; |
|||
@system_rows_inserted - @slave_system_rows_inserted |
|||
0 |
|||
connection master; |
|||
DELETE FROM t1 WHERE i=2; |
|||
connection master; |
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @master_rows_read; |
|||
@rows_read - @master_rows_read |
|||
2 |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @master_rows_updated; |
|||
@rows_updated - @master_rows_updated |
|||
1 |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @master_rows_deleted; |
|||
@rows_deleted - @master_rows_deleted |
|||
1 |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @master_rows_inserted; |
|||
@rows_inserted - @master_rows_inserted |
|||
1 |
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @master_system_rows_read; |
|||
@system_rows_read - @master_system_rows_read |
|||
0 |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @master_system_rows_updated; |
|||
@system_rows_updated - @master_system_rows_updated |
|||
0 |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @master_system_rows_deleted; |
|||
@system_rows_deleted - @master_system_rows_deleted |
|||
0 |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @master_system_rows_inserted; |
|||
@system_rows_inserted - @master_system_rows_inserted |
|||
0 |
|||
connection slave; |
|||
select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select @rows_read - @slave_rows_read; |
|||
@rows_read - @slave_rows_read |
|||
2 |
|||
select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select @rows_updated - @slave_rows_updated; |
|||
@rows_updated - @slave_rows_updated |
|||
1 |
|||
select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select @rows_deleted - @slave_rows_deleted; |
|||
@rows_deleted - @slave_rows_deleted |
|||
1 |
|||
select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select @rows_inserted - @slave_rows_inserted; |
|||
@rows_inserted - @slave_rows_inserted |
|||
1 |
|||
select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select @system_rows_read - @slave_system_rows_read; |
|||
@system_rows_read - @slave_system_rows_read |
|||
0 |
|||
select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select @system_rows_updated - @slave_system_rows_updated; |
|||
@system_rows_updated - @slave_system_rows_updated |
|||
0 |
|||
select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select @system_rows_deleted - @slave_system_rows_deleted; |
|||
@system_rows_deleted - @slave_system_rows_deleted |
|||
0 |
|||
select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
select @system_rows_inserted - @slave_system_rows_inserted; |
|||
@system_rows_inserted - @slave_system_rows_inserted |
|||
0 |
|||
connection master; |
|||
DROP TABLE t1; |
|||
DROP DATABASE testdb; |
|||
connection slave; |
|||
include/rpl_end.inc |
@ -1,53 +0,0 @@ |
|||
--source include/have_innodb.inc |
|||
--source include/have_binlog_format_row.inc |
|||
--source include/master-slave.inc |
|||
|
|||
# |
|||
# Bug#68220: innodb_rows_updated is misleading on slave when *info_repository=TABLE |
|||
# |
|||
|
|||
# created all the base variables at the beginning at the test |
|||
--connection master |
|||
select variable_value into @master_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select variable_value into @master_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select variable_value into @master_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select variable_value into @master_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select variable_value into @master_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select variable_value into @master_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select variable_value into @master_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select variable_value into @master_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
|
|||
--connection slave |
|||
select variable_value into @slave_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read'; |
|||
select variable_value into @slave_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated'; |
|||
select variable_value into @slave_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted'; |
|||
select variable_value into @slave_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted'; |
|||
select variable_value into @slave_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read'; |
|||
select variable_value into @slave_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated'; |
|||
select variable_value into @slave_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted'; |
|||
select variable_value into @slave_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted'; |
|||
|
|||
--connection master |
|||
CREATE DATABASE testdb; |
|||
USE testdb; |
|||
CREATE TABLE testdb.t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB; |
|||
|
|||
# insert a row and show counters on master and slave |
|||
INSERT INTO testdb.t1 VALUES (1); |
|||
--source suite/rpl/include/rpl_innodb_rows_counters.inc |
|||
|
|||
# update the row and show counters on master and slave |
|||
UPDATE t1 SET i=2 WHERE i=1; |
|||
--sync_slave_with_master |
|||
--source suite/rpl/include/rpl_innodb_rows_counters.inc |
|||
|
|||
# delete the row and show counters on master and slave |
|||
DELETE FROM t1 WHERE i=2; |
|||
--source suite/rpl/include/rpl_innodb_rows_counters.inc |
|||
|
|||
# clean the test |
|||
DROP TABLE t1; |
|||
DROP DATABASE testdb; |
|||
--sync_slave_with_master |
|||
|
|||
--source include/rpl_end.inc |
Write
Preview
Loading…
Cancel
Save
Reference in new issue