gpt4 book ai didi

MySQL "SET NAMES"靠近慢查询日志的顶部

转载 作者:可可西里 更新时间:2023-11-01 07:29:32 26 4
gpt4 key购买 nike

在最近推出的一个网站上,我注意到,在网站上实际的大量查询中,在数百万个查询中,成本最高的请求实际上是 SET NAMES,平均耗时超过 2.3 秒,而各种多-join 联合查询远低于 2 秒。最后,这将它置于慢查询日志的顶部附近,我只是想不出优化它的方法。

这似乎不是一个常见问题,因为我在谷歌搜索中没有找到它的引用资料。

由于SET NAMES是关于排序的,这里是相关信息:

  • MySQL 字符集是 UTF-8 Unicode (utf8)
  • 数据库连接排序规则为utf8_unicode_ci
  • 数据库及其所有表使用utf8_general_ci

FWIW,这是在运行 MySQL 5.0.45-log。数据库服务器是本地主机。

最佳答案

如果所有查询都很慢,SET NAMES 在服务器上的优先级可能非常低,因此要等到负载停止。如果您有许多其他需要很长时间执行的查询,您可能想先尝试优化它们。

这个“问题”的另一种解决方案是将其添加到服务器上的 my.cnf 中:

[mysqld]
init-connect = 'SET NAMES utf8'

这确保在客户端连接时将字符集设置为 UTF-8,因此客户端不必等待此“查询”的结果。您可能希望在您的软件中禁用 SET NAMES 查询。

主要是,除非您真的有很多 SET NAMES 需要这么长时间,否则我不会太担心。

关于MySQL "SET NAMES"靠近慢查询日志的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513452/

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