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

FGM*_*FGM 4 mysql performance logging

在最近推出的网站上,我注意到,在网站上的实际重要查询中,在数百万个查询中,最昂贵的请求实际上是SET NAMES,平均时间超过2.3秒,而各种多连接联合查询远低于2秒.最后,这将它放在慢查询日志的顶部附近,我只是想不出一种优化它的方法.

这似乎不是一个常见问题,因为我没有发现谷歌搜索.

由于SET NAMES是关于整理,这里是相关信息:

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

FWIW,这是运行MySQL 5.0.45-log.数据库服务器是localhost.

Veg*_*sen 6

如果所有查询都很慢,则SET NAMES在服务器上的优先级可能非常低,因此请等到负载停止运行.如果您有很多其他需要花费很长时间执行的查询,您可能需要先尝试优化这些查询.

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

[mysqld]
init-connect = 'SET NAMES utf8'
Run Code Online (Sandbox Code Playgroud)

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

主要是,我不会太担心,除非你真的有很多设置名称需要这么长时间.