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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能