V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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 · 7 天前 · 676 次点击

    请教一个问题,

    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 条回复    2025-02-15 12:19:36 +08:00
    wps353
        1
    wps353  
       7 天前
    据我所知,trx_id 是 6 个字节,基本上用不完。
    qtxxm
        2
    qtxxm  
    OP
       7 天前
    @wps353 正常业务,用完之前公司应搞倒闭了
    qtxxm
        3
    qtxxm  
    OP
       6 天前
    无人问津啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.