gpt4 book ai didi

mysql - information_schema.tables 查询慢

转载 作者:可可西里 更新时间:2023-11-01 06:36:01 30 4
gpt4 key购买 nike

我在典型的共享托管服务产品上运行一组自行开发的应用程序。我从允许表的静态配置表列表移动到基于 D/B 元数据前缀的表列表。当我将此版本推广到公共(public)服务时,我的每个请求延迟平均增加了 2.3–2.4 秒。一些仪器显示这完全归结为一个 SQL 查询:

SELECT TABLE_NAME AS name
FROM information_schema.tables
WHERE TABLE_SCHEMA = '<DBname>'
AND TABLE_NAME LIKE '<TablePrefix>%';

我使用它是因为我想明确命名结果集中的列。但是,使用备用查询围绕此进行编码会添加一行额外的代码,该代码在 <2 毫秒 内运行:

SHOW TABLES LIKE '<TablePrefix>%';

我的服务提供商使用 Enterprise MySql 5.0.92-50,所以我无法进行任何分析。这是一个缩放问题,因为它不会发生在我可以分析的开发环境和测试 VM 上。它们支持成千上万的用户,因此实时模式将非常大,但即使如此,连接和大多数查询也只需要几毫秒。

有谁知道为什么在大型多用户系统上查询基于内存的 information_schema 会花这么长时间?

最佳答案

对于那些可能想要一个有小缺点的 hack 的人:http://www.mysqlperformanceblog.com/2011/12/23/solving-information_schema-slowness/

它的作用是禁用一些统计数据,这些统计数据会在您查询架构时得到更新,更多信息请参见:http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_stats_on_metadata

为了让不想阅读的懒人更轻松,您只需更改设置:

innodb_stats_on_metadata=0

您可以在配置文件中或动态地执行此操作:

mysql> set global innodb_stats_on_metadata=0;

关于mysql - information_schema.tables 查询慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290433/

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