mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
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.
This commit is contained in:
@@ -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
|
Reference in New Issue
Block a user