mysql table_id介绍

table_id是什么

table_id是一个内部使用的标识符,用于标识数据库中的表,一个表对应一个唯一table_id;如果表结构发生变化,table_id也会发生变化,以确保当前缓存中,table_id和表名对应

table_id有什么特性

  1. table_id 并不是固定的,它是当表被载入内存(table_definition_cache)时,临时分配的,是一个不断增长的变量。  
  2. 当有新的table变更时,在cache中没有,就会触发一次load table def的操作,此时就会在原先最后一次table_id基础上+1,做为新的table def的id。
  3. flush tables,之后对表的更新操作也会触发table_id 的增长。
  4. 如果table def cache过小,就会出现频繁的换入换出,从而导致table_id增长比较快。
     

查看table_id

show binlog events in 'mysql-bin.xx'; 
里面可以看到执行的table_id

mysql> show binary log events in 'mysql-bin.000161';
| mysql-bin.000161 | 3339 | Query          |     45170 |        3411 | BEGIN                                                                                                                                                          |
| mysql-bin.000161 | 3411 | Table_map      |     45170 |        3471 | table_id: 4278 (wang.hero3)                                                                                                                                    |
| mysql-bin.000161 | 3471 | Delete_rows    |     45170 |        3526 | table_id: 4278 flags: STMT_END_F                                                                                                                               |
| mysql-bin.000161 | 3526 | Xid            |     45170 |        3557 | COMMIT /* xid=6967 */                                                                                                                                          |
| mysql-bin.000161 | 3557 | Anonymous_Gtid |     45170 |        3622 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'

table_id有什么风险

table_id是uint,最大值42亿;部分系统中如果频繁flush table或者表数量太多,频繁load table def的时候,可能会导致tablet_id溢出的情况,此时将无法CREATE表或者修改表结构;
决方法:

  1. 重启数据库使table_id 归0。
  2. 加大 table_definition_cache 的大小。增加table_open_cache大小来调整;
  3. 修改MySQL源码,将 RPL_TABLE_LIST结构中的uint型的table_id修改为ulong型 ,一劳永逸。
     

相关推荐

  1. SQLMap介绍

    2024-03-29 18:18:01       46 阅读
  2. GAN 介绍

    2024-03-29 18:18:01       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 18:18:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 18:18:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 18:18:01       87 阅读
  4. Python语言-面向对象

    2024-03-29 18:18:01       96 阅读

热门阅读

  1. URLSearchParams

    2024-03-29 18:18:01       47 阅读
  2. zookeeper源码(11)临时节点

    2024-03-29 18:18:01       39 阅读
  3. 【C++】动态内存分配 与 对象的动态建立与释放

    2024-03-29 18:18:01       48 阅读
  4. LeetCode 21

    2024-03-29 18:18:01       43 阅读
  5. Leetcoder Day43| 单调栈1

    2024-03-29 18:18:01       36 阅读
  6. TCP建立连接时,为什么每次的SYN都不一样

    2024-03-29 18:18:01       43 阅读
  7. Qwen1.5模型微调部署全过程

    2024-03-29 18:18:01       36 阅读
  8. 【无标题】

    2024-03-29 18:18:01       33 阅读
  9. AI大模型学习:AI大模型在特定领域的应用

    2024-03-29 18:18:01       41 阅读
  10. HDU水题刷题记录

    2024-03-29 18:18:01       49 阅读
  11. C#WPF将变量或自定义数据类绑定到控件实例

    2024-03-29 18:18:01       39 阅读
  12. vue做一个锁屏禁止页面前进后退

    2024-03-29 18:18:01       45 阅读