【发布时间】:2020-01-14 19:15:42
【问题描述】:
我最近安装了一个具有更新 MySQL 版本(从 8.0.13 到 8.0.16)的新服务器,在检索表的下一个自动增量值时我有不同的行为。
我最初使用的是
SHOW TABLE STATUS WHERE `Name` = 'user';
在我以前的服务器中它运行良好,我能够检索下一条记录的下一个自动增量值,但是对于新服务器,相同的命令无法正常工作,显示的 auto_increment 值不是下一个
我发现一个帖子提到这可能是由于统计表的缓存但在两台服务器上我都有
show variables like 'information_schema_stats_expiry';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| information_schema_stats_expiry | 86400 |
+---------------------------------+-------+
还有一个解决办法,就是使用命令禁用这个表的缓存
SET PERSIST information_schema_stats_expiry = 0
但我有两个问题:
- 首先:我在哪里设置 information_schema_stats_expiry ?我无法在 SQL 命令行上启动此命令,也无法在 mysql 配置文件中
- 第二个:如果我们禁用这个表的缓存,整体数据库性能会不会有问题?
【问题讨论】:
-
您看到
SHOW CREATE TABLE user的自动增量正确吗? -
我可以看到我的 id 设置为 NOT NULL AUTO_INCREMENT 的创建表函数
-
AUTO_INCREMENT =的最后说了什么? -
没什么,只是 CREATE TABLE
user(idint(11) NOT NULL AUTO_INCREMENT,.... -
最后我有 ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 和命令 SHOW TABLE STATUS WHERE
Name= 'user';给我79.....
标签: mysql