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

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL服務(wù)器進(jìn)程CPU占用100%的解決方法

2024-07-24 12:44:35
字體:
供稿:網(wǎng)友
朋友主機(jī)(Windows 2003 + IIS + PHP + MYSQL )近來 MySQL 服務(wù)進(jìn)程 (mysqld-nt.exe) CPU 占用率總為 100% 高居不下。此主機(jī)有10個左右的 database, 分別給十個網(wǎng)站調(diào)用。據(jù)朋友測試,導(dǎo)致 mysqld-nt.exe cpu 占用奇高的是網(wǎng)站A,一旦在 IIS 中將此網(wǎng)站停止服務(wù),CPU 占用就降下來了。一啟用,則馬上上升。

 MYSQL CPU 占用 100% 的解決過程
今天早上仔細(xì)檢查了一下。目前此網(wǎng)站的七日平均日 IP 為2000,PageView 為 3萬左右。網(wǎng)站A 用的 database 目前有39個表,記錄數(shù) 60.1萬條,占空間 45MB。按這個數(shù)據(jù),MySQL 不可能占用這么高的資源。

  于是在服務(wù)器上運行命令,將 mysql 當(dāng)前的環(huán)境變量輸出到文件 output.txt:

d:/web/mysql> mysqld.exe --help >output.txt

  發(fā)現(xiàn) tmp_table_size 的值是默認(rèn)的 32M,于是修改 My.ini, 將 tmp_table_size 賦值到 200M:

d:/web/mysql> notepad c:/windows/my.ini[mysqld]tmp_table_size=200M

  然后重啟 MySQL 服務(wù)。CPU 占用有輕微下降,以前的CPU 占用波形圖是 100% 一根直線,現(xiàn)在則在 97%~100%之間起伏。這表明調(diào)整 tmp_table_size 參數(shù)對 MYSQL 性能提升有改善作用。但問題還沒有完全解決。

  于是進(jìn)入 mysql 的 shell 命令行,調(diào)用 show processlist, 查看當(dāng)前 mysql 使用頻繁的 sql 語句:

mysql> show processlist;

  反復(fù)調(diào)用此命令,發(fā)現(xiàn)網(wǎng)站 A 的兩個 SQL 語句經(jīng)常在 process list 中出現(xiàn),其語法如下:

SELECT t1.pid, t2.userid, t3.count, t1.dateFROM _mydata AS t1 LEFT JOIN _myuser AS t3 ON t1.userid=t3.useridLEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pidORDER BY t1.pidLIMIT 0,15

  調(diào)用 show columns 檢查這三個表的結(jié)構(gòu) :

mysql> show columns from _myuser;mysql> show columns from _mydata;mysql> show columns from _mydata_body;

  終于發(fā)現(xiàn)了問題所在:_mydata 表,只根據(jù) pid 建立了一個 primary key,但并沒有為 userid 建立索引。而在這個 SQL 語句的第一個 LEFT JOIN ON 子句中:

LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid

  _mydata 的 userid 被參與了條件比較運算。于是我為給 _mydata 表根據(jù)字段 userid 建立了一個索引:

mysql> ALTER TABLE `_mydata` ADD INDEX ( `userid` )

  建立此索引之后,CPU 馬上降到了 80% 左右??吹秸业搅藛栴}所在,于是檢查另一個反復(fù)出現(xiàn)在 show processlist 中的 sql 語句:

SELECT COUNT(*)FROM _mydata AS t1, _mydata_key AS t2WHERE t1.pid=t2.pid and t2.keywords = '孔雀'

  經(jīng)檢查 _mydata_key 表的結(jié)構(gòu),發(fā)現(xiàn)它只為 pid 建了了 primary key, 沒有為 keywords 建立 index。_mydata_key 目前有 33 萬條記錄,在沒有索引的情況下對33萬條記錄進(jìn)行文本檢索匹配,不耗費大量的 cpu 時間才怪??磥砭褪轻槍@個表的檢索出問題了。于是同樣為 _mydata_key 表根據(jù)字段 keywords 加上索引:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 弥勒县| 河源市| 晴隆县| 轮台县| 德钦县| 化州市| 临邑县| 阿坝| 来安县| 加查县| 嘉义县| 同江市| 新巴尔虎左旗| 剑川县| 黄平县| 仁寿县| 偃师市| 鸡泽县| 古浪县| 宾川县| 乌鲁木齐市| 濉溪县| 青州市| 鸡东县| 新密市| 荔波县| 宜章县| 斗六市| 灵寿县| 竹山县| 富源县| 隆德县| 宣化县| 深泽县| 儋州市| 富锦市| 东安县| 新龙县| 长治县| 新巴尔虎左旗| 阿尔山市|