查看MVCC(多版本并发控制)版本信息的方法取决于你使用的是哪种数据库。下面以最常见的关系型数据库为例说明。
InnoDB 的 MVCC 是通过 事务 ID(trx_id) 和 undo log 实现的,但 MySQL 不直接暴露“行版本号”给用户。
你可以通过以下方式间接查看:
SELECT * FROM information_schema.innodb_trx;
关键字段:
trx_id:事务 ID(近似版本)trx_statetrx_started⚠️ 注意:
trx_id 不是严格意义上的“版本号”SELECT @@transaction_isolation;
常见值:
READ COMMITTEDREPEATABLE READ(InnoDB 默认)InnoDB 的 MVCC:
但 undo log 不能直接查询。
PostgreSQL 的 MVCC 信息对用户可见。
SELECT xmin, xmax, cmin, cmax, *
FROM your_table;
字段含义:
| 字段 | 说明 |
|---|---|
xmin |
插入该行的事务 ID(版本起点) |
xmax |
删除/更新该行的事务 ID(版本终点) |
cmin/cmax |
命令 ID(一般不用关注) |
✅ 这是真正的 MVCC 版本信息
SELECT txid_current();
SELECT txid_current_snapshot();
输出示例:
100:104:100,101,102
表示:
Oracle 使用 SCN(System Change Number)
SELECT current_scn FROM v$database;
SELECT *
FROM your_table
AS OF SCN 1234567;
或:
SELECT *
FROM your_table
AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '10' MINUTE;
| 数据库 | 是否可见版本号 | 查看方式 |
|---|---|---|
| PostgreSQL | ✅ 可见 | xmin / xmax |
| Oracle | ✅ 可见 | SCN |
| MySQL InnoDB | ❌ 不直接可见 | innodb_trx、隔离级别 |
| SQL Server | ✅ | rowversion / timestamp |
我可以给你更精确、可操作的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。