gpt4 book ai didi

mysql - 如何 "clean"mysql information_schema?

转载 作者:行者123 更新时间:2023-11-29 12:29:09 25 4
gpt4 key购买 nike

我有一个包含数万个表的数据库。结果,mysql information_schema 变得非常慢,通过影响表的打开和关闭时间等因素来影响整体性能。

由于所有的表都是Myisam,并且在mysql数据目录中都有相应的文件,所以我只是将一堆表文件移动到不同的数据库中。

这没有问题,但是,原始数据库中 information_schema 的性能并没有提高太多:

mysql> select count(*) from information_schema.TABLES where table_schema='database_1';
+----------+
| count(*) |
+----------+
| 17374 |
+----------+
1 row in set (1 min 28.68 sec)

与新数据库相比:

mysql> select count(*) from information_schema.TABLES where table_schema='database_2';
+----------+
| count(*) |
+----------+
| 16127 |
+----------+
1 row in set (2.15 sec)

似乎某些“东西”一定被留在了 information_schema 中。

有谁知道造成这种情况的原因以及是否可以采取措施?

最佳答案

导致性能下降的是磁盘 IO。

information_schema 实现会查找磁盘上的每个 *.FRM 文件,以查找表。

当文件最近被打开时,文件实际上已经在内存中,并且没有进行真正的磁盘io,这导致查询速度很快。

当文件最近没有打开过,或者已经被逐出时,文件 io 会导致磁盘 io,速度非常慢。

考虑到表的数量很大,没有什么可以加快 information_schema 查询本身的速度。更好的改进是减少访问 information_schema 的查询数量。

如果架构稳定,请考虑将 information_schema 复制到真实表中,并查询该副本。

关于mysql - 如何 "clean"mysql information_schema?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27860573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com