左右不逢缘 发表于 2021-8-5 15:35:04

懵逼了,我这数据库好像在默默的查东西

2557 Init DB      u3dchina_com
               2556 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2556 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2556 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2556 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2556 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2557 Query      SELECT tid FROM unity_forum_optionvalue4 WHERE 1 AND `archy_qy_3` IN('12','12.1','12.2','12.3','12.4','12.5','12.6','12.7','12.8','12.9','12.10','12.11','12.12','12.13','12.14','12.15','12.16','12.17') AND `archy_zpzw` IN('4') AND `archy_gznx` IN('3') AND `archy_gzdy` IN('5') AND `archy_xlyq` IN('4')AND fid='48'
               2556 Query      SELECT authorid FROM unity_forum_thread WHERE tid=6839
               2556 Query      SELECT groupid FROM unity_common_member WHERE uid=1
               2556 Query      SELECT authorid FROM unity_forum_thread WHERE tid=6839
               2556 Query      SELECT count(1) FROM unity_forum_post WHERE tid=6839 and authorid = 0
               2557 Query      SELECT COUNT(*) FROM unity_forum_thread tWHERE t.`fid`='48' AND t.`tid` IN('0') AND t.`displayorder`>='0' AND t.`sortid`='4'
               2557 Query      SELECT * FROM unity_common_cache WHERE `cachekey`='threadclasscount_48'
               2557 Query      SELECT * FROM unity_forum_threadWHERE `fid`='48' AND `tid` IN('0') AND `displayorder` IN('0','1','2','3','4') AND `sortid`='4'ORDER BY displayorder DESC, lastpost DESC    LIMIT 20
               2557 Query      SELECT * FROM unity_common_cache WHERE `cachekey`='threadclasscount_48'
               2557 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2557 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2556 Quit      
               2557 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2557 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2557 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2557 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2557 Quit      
               2558 Connect      u3dchina_com@localhost on
               2558 Query      SET character_set_connection=gbk, character_set_results=gbk, character_set_client=binary,sql_mode=''
               2558 Init DB      u3dchina_com
               2558 Query      SELECT tid FROM unity_forum_optionvalue4 WHERE 1 AND `archy_xlyq` IN('8') AND `archy_zpzw` IN('5') AND `archy_qy_3` IN('32','32.1','32.2','32.3','32.4','32.5','32.6','32.7','32.8','32.9','32.10','32.11','32.12','32.13','32.14') AND `archy_gznx` IN('2') AND `archy_gzdy` IN('4')AND fid='48'
               2558 Query      SELECT COUNT(*) FROM unity_forum_thread tWHERE t.`fid`='48' AND t.`tid` IN('0') AND t.`displayorder`>='0' AND t.`sortid`='4'
               2558 Query      SELECT * FROM unity_common_cache WHERE `cachekey`='threadclasscount_48'
               2558 Query      SELECT * FROM unity_forum_threadWHERE `fid`='48' AND `tid` IN('0') AND `displayorder` IN('0','1','2','3','4') AND `sortid`='4'ORDER BY displayorder DESC, lastpost DESC    LIMIT 20
               2558 Query      SELECT * FROM unity_common_cache WHERE `cachekey`='threadclasscount_48'
               2558 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2558 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2558 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2558 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2558 Query      SELECT COUNT(*) FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 )
               2558 Query      SELECT `tid` FROM unity_forum_thread WHERE `displayorder` = 0 AND ( `fid` = 43 OR `fid` = 66 ) LIMIT 0,1712
               2558 Quit      



然后cpu飙高。。。。。。。。哪个大佬有遇到过吗{:2_36:}

Discuz智能体 发表于 2025-3-21 08:21:33

从你提供的数据库查询日志来看,数据库在执行大量的查询操作,尤其是针对 `unity_forum_thread` 表的查询。这些查询主要集中在 `displayorder = 0` 且 `fid` 为 43 或 66 的帖子。此外,还有一些查询涉及到 `unity_forum_optionvalue4` 表,这些查询可能是由于某些插件或自定义功能引起的。

### 可能的原因:
1. **插件或自定义功能**:某些插件或自定义功能可能在后台频繁查询数据库,尤其是涉及到 `unity_forum_optionvalue4` 表的查询。这些查询可能是为了筛选或排序帖子,但由于查询条件复杂或数据量大,导致数据库负载增加。

2. **缓存问题**:从日志中可以看到,系统频繁查询 `unity_common_cache` 表,可能是缓存机制没有正常工作,导致每次请求都需要重新查询数据库。

3. **索引问题**:如果 `unity_forum_thread` 表中的 `displayorder` 和 `fid` 字段没有合适的索引,查询性能会显著下降,尤其是在数据量较大的情况下。

4. **循环查询**:某些查询可能被循环执行,导致数据库负载增加。例如,`SELECT COUNT(*)` 和 `SELECT tid` 的查询在短时间内被多次执行。

### 解决方案:
1. **检查插件或自定义功能**:检查是否有插件或自定义功能在后台频繁查询数据库。如果有,尝试优化这些查询,或者考虑是否真的需要这些功能。

2. **优化缓存机制**:确保缓存机制正常工作,减少对数据库的直接查询。可以通过增加缓存时间或使用更高效的缓存策略来优化。

3. **添加索引**:为 `unity_forum_thread` 表中的 `displayorder` 和 `fid` 字段添加索引,以提高查询性能。可以使用以下 SQL 语句添加索引:
   ALTER TABLE unity_forum_thread ADD INDEX idx_displayorder_fid (displayorder, fid);

4. **优化查询**:如果某些查询是循环执行的,考虑是否可以合并查询或减少查询频率。例如,可以将多个 `SELECT COUNT(*)` 查询合并为一个查询。

5. **监控数据库性能**:使用数据库性能监控工具(如 MySQL 的 `SHOW PROCESSLIST` 或 `EXPLAIN`)来分析哪些查询最耗时,并针对性地进行优化。

### 进一步排查:
- **查看慢查询日志**:启用 MySQL 的慢查询日志,找出执行时间较长的查询,进一步分析这些查询的瓶颈。
- **检查服务器资源**:确保服务器的 CPU、内存和磁盘 I/O 没有其他瓶颈,导致数据库性能下降。

### 总结:
你遇到的 CPU 飙高问题很可能是由于数据库查询负载过高引起的。通过优化查询、添加索引、检查插件功能和优化缓存机制,可以有效降低数据库负载,从而解决 CPU 飙高的问题。如果问题依然存在,建议进一步分析慢查询日志和服务器资源使用情况。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 懵逼了,我这数据库好像在默默的查东西