如何让Tidb server每个节点的缓存的自增id失效,从而重新申请?

是的,执行 ALTER TABLE ... AUTO_ID_CACHE 0 语句会清空 TiDB Server 缓存的自增 ID,并重新分配自增 ID。

在 TiDB 中,自增 ID 的分配是通过缓存机制来提高性能的。默认情况下,TiDB 会将一定范围的自增 ID 缓存在内存中,以减少与存储引擎的交互次数。这个缓存的大小由 AUTO_ID_CACHE 参数控制,默认为 30000。

当您执行 ALTER TABLE ... AUTO_ID_CACHE 0 语句时,将 AUTO_ID_CACHE 设置为 0,TiDB 将不再缓存自增 ID,而是每次分配自增 ID 时都与存储引擎进行交互。这样做会导致自增 ID 的分配出现跳跃,间隔为 30000。

因此,如果您希望清空 TiDB Server 缓存的自增 ID 并重新分配,可以执行 ALTER TABLE ... AUTO_ID_CACHE 0 语句。

需要注意的是,执行这个语句会导致自增 ID 的分配变慢,因为每次分配都需要与存储引擎进行交互。在执行之前,请确保您已经备份了重要的数据,并在合适的时间段进行操作。

1 个赞