Browse Source
MDEV-31772 Innodb_rows_* missing
MDEV-31772 Innodb_rows_* missing
In commit 0dab74ff3f
(MDEV-28539)
a number of counters were removed. Due to popular demand, we are
reinstating some of the counters, in a way that incurs less
performance penalty.
We reinstate the following global status variables:
innodb_rows_deleted
innodb_rows_inserted
innodb_rows_updated
The counter innodb_rows_read will not be reinstated, because doing so
would cause a large performance regression.
These counters will also cover whatever was previously covered
by innodb_system_rows_* counters, which we will not be
reinstating.
We also add the INFORMATION_SCHEMA.INNODB_METRICS counters
dml_reads, dml_inserts, dml_delete, dml_updates, but not their
dml_system_* counterparts.
trx_t::commit_in_memory(): Update the global trx_sys.row_ops[]
from the local row_ops[] at the end of each transaction.
Reviewed by: Nikita Malyavin
10.11-MDEV-31772
17 changed files with 511 additions and 74 deletions
-
9mysql-test/suite/innodb/r/innodb.result
-
3mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
-
3mysql-test/suite/innodb/r/innodb_status_variables.result
-
91mysql-test/suite/innodb/r/monitor.result
-
6mysql-test/suite/innodb/t/innodb.test
-
87mysql-test/suite/innodb/t/monitor.test
-
26mysql-test/suite/rpl/include/rpl_innodb_rows_counters.inc
-
102mysql-test/suite/rpl/r/rpl_innodb_bug68220.result
-
42mysql-test/suite/rpl/t/rpl_innodb_bug68220.test
-
135storage/innobase/handler/ha_innodb.cc
-
6storage/innobase/include/srv0mon.h
-
2storage/innobase/include/trx0sys.h
-
5storage/innobase/include/trx0trx.h
-
22storage/innobase/row/row0sel.cc
-
35storage/innobase/srv/srv0mon.cc
-
8storage/innobase/trx/trx0trx.cc
-
3storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
@ -0,0 +1,26 @@ |
|||
######################################### |
|||
# 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_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; |
|||
|
|||
--sync_slave_with_master |
|||
|
|||
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; |
|||
|
|||
--connection master |
@ -0,0 +1,102 @@ |
|||
include/master-slave.inc |
|||
[connection master] |
|||
connection master; |
|||
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'; |
|||
connection slave; |
|||
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'; |
|||
connection master; |
|||
CREATE DATABASE testdb; |
|||
USE testdb; |
|||
CREATE TABLE t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB; |
|||
INSERT INTO t1 VALUES (1); |
|||
connection master; |
|||
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 |
|||
connection slave; |
|||
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 |
|||
connection master; |
|||
UPDATE t1 SET i=2 WHERE i=1; |
|||
connection slave; |
|||
connection master; |
|||
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 |
|||
connection slave; |
|||
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 |
|||
connection master; |
|||
DELETE FROM t1 WHERE i=2; |
|||
connection master; |
|||
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 |
|||
connection slave; |
|||
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 |
|||
connection master; |
|||
DROP DATABASE testdb; |
|||
connection slave; |
|||
include/rpl_end.inc |
@ -0,0 +1,42 @@ |
|||
--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_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'; |
|||
|
|||
--connection slave |
|||
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'; |
|||
|
|||
--connection master |
|||
CREATE DATABASE testdb; |
|||
USE testdb; |
|||
CREATE TABLE t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB; |
|||
|
|||
# insert a row and show counters on master and slave |
|||
INSERT INTO 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 DATABASE testdb; |
|||
--sync_slave_with_master |
|||
|
|||
--source include/rpl_end.inc |
Write
Preview
Loading…
Cancel
Save
Reference in new issue