国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

千萬級記錄的Discuz論壇導致MySQL CPU 100%的優化筆記

2024-07-24 12:44:35
字體:
來源:轉載
供稿:網友
發現此主機運行了幾個 Discuz 的論壇程序, Discuz論壇的好幾個表也存在著這個問題。于是順手一并解決,cpu占用再次降下來了。
  前幾天,一位朋友通過這篇文章找到了我,說他就是運行最新的 discuz 版本,MySQL 占用 CPU 100%,導致系統假死,每天都要重啟好幾次,花了一個多月的時間一直沒有解決,希望我幫忙一下。經過檢查,他的這個論壇最重要的幾個表中,目前 cdb_members 表,有記錄 6.2 萬;cdb_threads 表,有記錄 11萬;cdb_posts表,有記錄 1740 萬;所有數據表的記錄加起來,超過 2000 萬;數據庫的大小超過 1GB。經過半天的調試,總算完成了 discuz 論壇優化,于是將其解決經過記錄在這篇文章中。

  2007年3月我發現 discuz 論壇的數據庫結構設計有一些疏忽,有許多查詢子句的條件比較,都沒有建立 Index 索引。當時我所檢查的那個數據表,記錄只有幾千條,因此對 CPU 負荷不大。現在這個數據庫表,上千萬的記錄檢索,可以想象,如果數據表結構設計不規范,沒有提供索引,所耗費的時間是一個恐怖的數字。有關 MySQL 建立索引的重要性,可以參見我的這篇文章底部的說明

  為了調試方便,我從 dizcus 的官網下載了其最新的 Dizcus! 5.5.0 論壇程序.

  我首先檢查了 my.ini 的參數配置,一切正常。進入 MySQL 的命令行,調用 show processlist 語句,查找負荷最重的 SQL 語句,結合 Discuz 論壇的源碼,發現有以下語句導致 CPU 上升:

復制代碼 代碼如下:

mysql> show processlist;
+-----+------+----------------+---------+---------+------+------------+---------
-----------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info

+-----+------+----------------+---------+---------+------+------------+---------
-----------------------------------------------------------------+
| 363 | root | localhost:1393 | history | Query | 0 | statistics | SELECT C
OUNT(*) FROM cdb_pms WHERE msgfromid=11212 AND folder='outbox' |
+-----+------+----------------+---------+---------+------+------------+---------

檢查 cdb_pms 表的結構:
復制代碼 代碼如下:

mysql> show columns from cdb_pms;
+-----------+------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------------+------+-----+---------+----------------+
| pmid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| msgfrom | varchar(15) | NO | | | |
| msgfromid | mediumint(8) unsigned | NO | MUL | 0 | |
| msgtoid | mediumint(8) unsigned | NO | MUL | 0 | |
| folder | enum('inbox','outbox') | NO | | inbox | |
| new | tinyint(1) | NO | | 0 | |
| subject | varchar(75) | NO | | | |
| dateline | int(10) unsigned | NO | | 0 | |
| message | text | NO | | | |
| delstatus | tinyint(1) unsigned | NO | | 0 | |
+-----------+------------------------+------+-----+---------+----------------+
10 rows in set (0.00 sec)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋中市| 宝丰县| 曲松县| 余姚市| 永吉县| 印江| 永州市| 修武县| 临安市| 吕梁市| 和静县| 延吉市| 伊吾县| 理塘县| 镇原县| 海安县| 荥阳市| 治县。| 金门县| 马尔康县| 绥中县| 株洲县| 宁明县| 娄烦县| 潞城市| 富裕县| 招远市| 齐齐哈尔市| 新营市| 策勒县| 宜昌市| 长泰县| 杂多县| 寿光市| 韩城市| 东阳市| 集贤县| 正蓝旗| 信阳市| 龙泉市| 兴国县|