› 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 · 2903 views
    This topic created in 589 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   ·   Privacy   ·   Solana   ·   847 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:38 · PVG 04:38 · LAX 13:38 · JFK 16:38
    ♥ Do have faith in what you're doing.