2013-02-04 200 views
0

我的Linux網絡服務器上的一些數據庫有一個非常奇怪的性能問題。第一:INNODB的Mysql性能問題

  • 問題在不同的InnoDB表occures
  • 只有10 - 表中的15000項
  • 索引正確
  • 只發生一天

下面的查詢一次或兩次非常緩慢(只是不時):

UPDATE t_contentlocks 
SET lastaccess = NOW(), has_write_access = '1' 
WHERE id = '10' 

字段「id」是主要(整數),並且該表具有大約20個條目。這樣的查詢如何處理30秒?目前沒有其他疑問。看起來/感覺就像mysql服務器進入某種休眠模式,現在需要時間再次喚醒。通常這個查詢需要小於0.00001s。

有人有同樣的問題/任何修復它嗎?

謝謝!

+0

爲now()嘗試一個常量值並查看它是否有任何區別。 – palindrom

+0

嘗試執行'解釋更新...',請打印執行計劃! – Michael

+0

類型轉換?您可以刪除數字上的引號並再次執行查詢。 – ravnur

回答

0

你查詢id = '10',id是一個int。每次運行查詢時,id都將轉換爲varchar,而indez不會是用戶。所以它會做得更快:

WHERE id = 10 

現在索引將是用戶,我不知道它會解決您的30秒的問題。

+0

不幸的是這並沒有幫助... – Andi

0

除了同儕回答之外,您還可以檢查分析查詢,然後通過查看查詢執行需要多少時間來做出正確決定。

SET PROFILING=1; 
UPDATE t_contentlocks 
SET lastaccess = NOW(), has_write_access = '1' 
WHERE id = '10'; 
show profile for QUERY 1;