V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
qtxxm
V2EX  ›  MySQL

关于 mysql trx_id 的疑惑 发帖一问

  •  
  •   qtxxm · Feb 14, 2025 · 2477 views
    This topic created in 437 days ago, the information mentioned may be changed or developed.

    请教一个问题,

    BEGIN;
    select * from sys_hosts;
    SELECT TRX_ID FROM INFORMATION_SCHEMA.INNODB_TRX  WHERE TRX_MYSQL_THREAD_ID = CONNECTION_ID();
    COMMIT;
    

    返回如下 +-----------------+ | TRX_ID | +-----------------+ | 421114694075176 | +-----------------+ 1 row in set (0.00 sec)

    BEGIN;
    delete from sys_hosts WHERE id < 0;
    SELECT TRX_ID FROM INFORMATION_SCHEMA.INNODB_TRX  WHERE TRX_MYSQL_THREAD_ID = CONNECTION_ID();
    COMMIT;
    

    返回如下 +---------+ | TRX_ID | +---------+ | 1092017 | +---------+ 1 row in set (0.00 sec)

    以上,只读事务中的 事务 id 是一个非常大的值 421114694075176 实际上如果数据库有写操作,得到的真实事务 id 是一个逐渐递增的值,比如这里 1092017,这个值会用于实际数据行中的隐藏列 trx_id

    那么请问大佬们

    1. 只读事务 id 这个值数据库是怎么生成得到的?
    2. 是否可以认为,mysql 为了避免 trx_id 的浪费,只会在真实涉及到写操作的事务中,才生成真正的 trx_id
    3. 在 mysql trx_id 自增达到最大值时,各互联网大厂是怎么处理的?(这个值理论上足够用很久,是不是我想多了)
    3 replies    2025-02-15 12:19:36 +08:00
    wps353
        1
    wps353  
       Feb 14, 2025
    据我所知,trx_id 是 6 个字节,基本上用不完。
    qtxxm
        2
    qtxxm  
    OP
       Feb 14, 2025
    @wps353 正常业务,用完之前公司应搞倒闭了
    qtxxm
        3
    qtxxm  
    OP
       Feb 15, 2025
    无人问津啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   952 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:15 · PVG 05:15 · LAX 14:15 · JFK 17:15
    ♥ Do have faith in what you're doing.