如何通过系统表查询带有 AUTO_ID_CACHE=1 的表有哪些?

【 TiDB 使用环境】生产环境
【 TiDB 版本】 6.5.0

【遇到的问题:问题现象及影响】

TiDB 中很多表在建表时设置了 AUTO_ID_CACHE =1 ,现在想通过系统表查询具体有哪些表设置了这个操作,该在哪个系统表里可以查询到?我看了下 information_schema 下 tables、columns 表都没有这个指标。

我只知道可以用show create table 查看表创建语句有没有AUTO_ID_CACHE 备注

我也是除了show create table,没有在哪个基表查到

没找到,写个shell循环获取下吧

查不到

平时都是单个表单个表的弄,这个还真没有经验;看楼上提了可以在shell循环查然后写到文件里或打出来

能不能使用存储过程来实现。

写个脚本调用tidb的http api

印象中目前没有统一计记录到系统表,可以考虑写个脚本来完成处理

这个值难道不是配置成了默认值,难道每个表都又被改成了不同的值?

你好。这个值可以配置为默认值吗?是有参数可以配置么?请问如何操作?我的版本是 6.5.0,好像没找到默认值的修改方法

SELECT
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    information_schema.TABLES
WHERE
    TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA', 'mysql')
    AND AUTO_INCREMENT IS NOT NULL
    AND AUTO_INCREMENT > 0;

不是的哦,我是想查 AUTO_ID_CACHE 是否为1 ,不是查表当前的 自增ID是多少

dumpling导出表结构也可以看到

#!/bin/bash

执行查询语句,并将结果存储到数组中

result=($(mysql -h tidb-ip -P 4000 -u root -p’’ -N -e “select TIDB_TABLE_ID from information_schema.tables where TABLE_SCHEMA=‘your_schema’”))

遍历数组

for item in “${result[@]}”
do
AUTO_ID_CACHE=$(curl -s http://tidb-ip:status-port/schema?table_id=${item} 2>/dev/null | grep ‘“auto_id_cache”: 1,’)
echo $AUTO_ID_CACHE

判断auto_id_cache的值是否为1,如果是则打印TABLE_SCHEMA和TABLE_NAME

if [[ ! -z $AUTO_ID_CACHE ]]; then
mysql -h tidb-ip -P 4000 -u root -p’’ -N -e “select TIDB_TABLE_ID,TABLE_SCHEMA,TABLE_NAME from information_schema.tables where TIDB_TABLE_ID=$item;”
fi
done

很强 ,不错

有点东西

NB,直接给出答案