我使用「top」(linux)顯示90%的CPU峯值時,MYSQL有一個很高的CPU問題。高CPU - 怎麼辦
我試圖找到問題的根源,打開通用日誌和慢查詢日誌, 緩慢的查詢日誌沒有找到任何東西。
該Db包含幾個小表和一個包含近100k行的大表,數據庫引擎是MyIsam。奇怪的事情,我已經注意到,在大桌上,選擇,插入速度非常快,但更新需要0.2 - 0.5秒。
已經使用優化和修復,沒有改進。
表正在被頻繁更新,這可能是高CPU%的來源嗎?
我該怎麼做才能改善這一點?
我使用「top」(linux)顯示90%的CPU峯值時,MYSQL有一個很高的CPU問題。高CPU - 怎麼辦
我試圖找到問題的根源,打開通用日誌和慢查詢日誌, 緩慢的查詢日誌沒有找到任何東西。
該Db包含幾個小表和一個包含近100k行的大表,數據庫引擎是MyIsam。奇怪的事情,我已經注意到,在大桌上,選擇,插入速度非常快,但更新需要0.2 - 0.5秒。
已經使用優化和修復,沒有改進。
表正在被頻繁更新,這可能是高CPU%的來源嗎?
我該怎麼做才能改善這一點?
首先,你可以定義哪些是超載服務器的查詢?在這種情況下,請把它粘貼在這裏,也許我們可以幫助你。 另外,請看錶結構。具有許多索引的表可能具有較慢的更新時間跨度。 我也建議你給我們更多關於這個問題的數據。
希望幫助,
彈出進入腦海的第一件事就是索引,但不適合,因爲你的選擇和插入的速度快。它通常是插入和更新,會在「過度索引」的表格上變慢。這留下觸發器......你有一個更新觸發器,可能會做很多工作,並導致穗?
我在這張桌子上沒有任何觸發器,只有1個索引 – 2010-09-30 01:42:27
一個需要0.5秒的查詢不會在100%的頂部cpu中顯示。太小了。 也嘗試「顯示完整進程列表」;驗證你的my.cnf,甚至嘗試減少查詢超時。慢查詢日誌可以捕捉足夠慢的任何事情。
是的,但是這個表格正在被非常頻繁地更新,可能會比每秒幾次 – 2010-09-30 01:43:28
基於表的密鑰,該表上的任何更新語句都很慢。 例如UPDATE客戶SET CustMoney = 1 WHERE CustUID =「someid」
CREATE TABLE IF NOT EXISTS `customers` (
`CustFullName` varchar(45) NOT NULL,
`CustPassword` varchar(45) NOT NULL,
`CustEmail` varchar(128) NOT NULL,
`SocialNetworkId` tinyint(4) NOT NULL,
`CustUID` varchar(64) character set ascii NOT NULL,
`CustMoney` bigint(20) NOT NULL default '0',
`LastIpAddress` varchar(45) character set ascii NOT NULL,
`LastLoginTime` datetime NOT NULL default '1900-10-10 10:10:10',
`SmallPicURL` varchar(120) character set ascii default '',
`LargePicURL` varchar(120) character set ascii default '',
`LuckyChips` int(10) unsigned NOT NULL default '0',
`AccountCreationTime` datetime NOT NULL default '2009-11-11 11:11:11',
`AccountStatus` tinyint(4) NOT NULL default '1',
`CustLevel` int(11) NOT NULL default '0',
`City` varchar(32) NOT NULL default '',
`State` varchar(32) NOT NULL default '0',
`Country` varchar(32) NOT NULL default '',
`Zip` varchar(16) character set ascii NOT NULL,
`CustExp` bigint(20) NOT NULL default '0',
PRIMARY KEY (`CustUID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
再次林不知道這是對CPU佔用率過高的原因,但在我看來,它的不正常的更新語句需要那麼長時間。 (0.5秒)
該表格目前正在更新至多5次,並且在將來會更新更頻繁。
這是什麼樣的服務器?我已經看到斯諾勞寫和虛擬機上相對較快的讀取。 http://en.wikipedia.org/wiki/Hdparm必須說什麼? 你有什麼cpu/ram?什麼是平均負載?
你的MySQL服務器上有神經節設置嗎?經常神經節指標以及神經節的mysql_stats插件可能會揭示發生了什麼。
我發現mytop非常有幫助。
http://serverfault.com/是最好的地方。 – Ruel 2010-09-30 01:04:51