php - 从 5.6 升级到 5.7 后查询极慢
问题描述
当将 mySQL 服务器从 5.6 升级到 5.7 时,在 vbb5 上运行的论坛似乎变得非常缓慢。查看缓慢的查询文件,似乎行扫描变得比以前慢得多。
下面是一个典型的论坛查询,它在 1 到 3 秒之前运行,现在在 30 到 75 秒之间运行。节点表和闭包表各有 11 到 1300 万条记录。我对两个表都进行了表优化。
# Query_time: 56.239686 Lock_time: 0.000452 Rows_sent: 500 Rows_examined: 672441
SELECT DISTINCT node.starter AS nodeid
FROM node as node
LEFT JOIN node AS starter ON starter.nodeid = IF(node.starter = 0, node.nodeid, node.starter)
JOIN closure AS closure ON node.nodeid = closure.child
WHERE node.contenttypeid <> 30 AND
closure.parent = '47' AND
node.nodeid <> closure.parent AND
node.inlist = 1 AND
node.contenttypeid <> '15' AND
node.protected <> '1'
AND (node.public_preview = 1 OR ( ( ( (starter.parentid IN (13,22,1,2,24,27,33,47,49,62,14,25,28,32,50,52,70,15,29,31,40,44,63,69,6,16,37,38,43,46,51,53,17,30,39,54,55,67,12,18,23,26,34,42,45,20,21,41,48,56,61,82,80,72,79,77,78,76,75,74,68,73,3629857,3654649) ) AND node.showapproved > 0 AND node.viewperms > 1 AND node.showpublished > 0 ))
OR starter.parentid = 9 AND node.userid IN (0)))
ORDER BY starter.created DESC,node.nodeid ASC
LIMIT 500
我已经使用 my.cnf 设置进行了一些操作,但仍然对性能提升持负面态度:
performance-schema=0
symbolic-links=0
performance-schema=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-storage-engine=MyISAM
innodb_file_per_table=1
max_allowed_packet=268435456
open_files_limit=10000
innodb_buffer_pool_size = 256M
#tmp_table_size = 50M
#max_heap_table_size = 40M
join_buffer_size= 256K
query_cache_size = 128M
query_cache_type = 1
任何提示我应该看什么?
解决方案
推荐阅读
- actions-on-google - How can I push a message to a Dialogflow session?
- firebase - 在 Firebase 中获取远程配置之前,我们是否需要等待或刷新用户事件或属性?
- ajax - 保持 Ajax 活动以防止防火墙超时
- laravel - LinkedIn laravel 回调认证
- mysql - 尝试合并表时出现访问错误
- facebook-messenger - Messenger ref parameter is not passed to dialogflow
- botframework - 在 JSON 枚举 FormFlow 对话框中键入另一个答案
- python - Separator in the output after regex filter on a list
- mongodb - How do I flatten the results of an aggregation?
- python - 未找到分布在 python 轮中的共享库