mysqltest

测试脚本

DROP TABLE IF EXISTS test.t1;
CREATE TABLE test.t1 (i INT, f FLOAT);
--enable_session_track_info
SET @@SESSION.session_track_schema=ON;
SET @@SESSION.session_track_system_variables='*';
SET @@SESSION.session_track_state_change=ON;
USE information_schema;
SET NAMES 'utf8mb4';
SET @@SESSION.session_track_transaction_info='CHARACTERISTICS';
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION READ WRITE;
START TRANSACTION;
SELECT 1;
INSERT INTO test.t1 () VALUES();
INSERT INTO test.t1 () VALUES(1, RAND());
COMMIT;
 
SET @@SESSION.session_track_transaction_info='STATE';
SET @@SESSION.session_track_gtids='OWN_GTID';
START TRANSACTION;
SELECT 1;
INSERT INTO test.t1 () VALUES();
INSERT INTO test.t1 () VALUES(1, RAND());
COMMIT;

/usr/local/mysql/bin/mysqltest -uroot -h127.1 -p'wonima' -P15213 --record </tmp/wnm.test

结果

DROP TABLE IF EXISTS test.t1;
CREATE TABLE test.t1 (i INT, f FLOAT);
SET @@SESSION.session_track_schema=ON;
SET @@SESSION.session_track_system_variables='*';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_system_variables
-- *

SET @@SESSION.session_track_state_change=ON;
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_state_change
-- ON

USE information_schema;
-- Tracker : SESSION_TRACK_SCHEMA
-- information_schema

-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1

SET NAMES 'utf8mb4';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- character_set_connection
-- utf8mb4
-- character_set_client
-- utf8mb4
-- character_set_results
-- utf8mb4

-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1

SET @@SESSION.session_track_transaction_info='CHARACTERISTICS';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_transaction_info
-- CHARACTERISTICS

-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1

-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- 

-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- ________

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

SET TRANSACTION READ WRITE;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ WRITE;

START TRANSACTION;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; START TRANSACTION READ WRITE;

-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_______

SELECT 1;
1 + 1
2
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_____S_

Warnings:
Note	1105	Query 'SELECT 1' rewritten to 'SELECT 1 + 1' by a query rewrite plugin
INSERT INTO test.t1 () VALUES();
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T___W_S_

INSERT INTO test.t1 () VALUES(1, RAND());
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T___WsS_

COMMIT;
-- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
-- 

-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- ________

SET @@SESSION.session_track_transaction_info='STATE';
-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
-- session_track_transaction_info
-- STATE

-- Tracker : SESSION_TRACK_STATE_CHANGE
-- 1

START TRANSACTION;
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_______

SELECT 1;
1 + 1
2
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_____S_

Warnings:
Note	1105	Query 'SELECT 1' rewritten to 'SELECT 1 + 1' by a query rewrite plugin
INSERT INTO test.t1 () VALUES();
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T___W_S_

INSERT INTO test.t1 () VALUES(1, RAND());
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T___WsS_

COMMIT;
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- ________

ok

从上面结果中,可以看到SELECT 1 的结果是 2
因为启用了 rewrite plugin

SELECT 1;
1 + 1
2
-- Tracker : SESSION_TRACK_TRANSACTION_STATE
-- T_____S_

Warnings:
Note	1105	Query 'SELECT 1' rewritten to 'SELECT 1 + 1' by a query rewrite plugin

T___WsS_
解释如下:

Position 1: Whether an active transaction is ongoing.
T: An explicitly started transaction is ongoing.
I: An implicitly started transaction (autocommit=0) is ongoing.
_: There is no active transaction.

Position 2: Whether nontransactional tables were read in the context of the current transaction.
r: One or more nontransactional tables were read.
_: No nontransactional tables were read so far.

Position 3: Whether transactional tables were read in the context of the current transaction.
R: One or more transactional tables were read.
_: No transactional tables were read so far.

Position 4: Whether unsafe writes (writes to nontransactional tables) were performed in the context of the current transaction.
w: One or more nontransactional tables were written.
_: No nontransactional tables were written so far.

Position 5: Whether any transactional tables were written in the context of the current transaction.
W: One or more transactional tables were written.
_: No transactional tables were written so far.

Position 6: Whether any unsafe statements were executed in the context of the current transaction. Statements containing nondeterministic constructs such as RAND() or UUID() are unsafe for statement-based replication.
s: One or more unsafe statements were executed.
_: No unsafe statements were executed so far.

Position 7: Whether a result set was sent to the client during the current transaction.
S: A result set was sent.
_: No result sets were sent so far.

Position 8: Whether a LOCK TABLES statement is in effect.
L: Tables are explicitly locked with LOCK TABLES.
_: LOCK TABLES is not active in the session.
posted @ 2021-12-23 11:07  Coye  阅读(110)  评论(0编辑  收藏  举报