簡體   English   中英

MySQL慢日志:簡單的選擇查詢需要26秒

[英]Mysql slow log: simple select query takes 26 seconds

我有一個簡單的表,正在使用InnoDB:

tag_id int(20), primary
tag varchar(50)

表中只有106個標簽,有時這個簡單的選擇查詢需要10s,16s,30s或更長時間:

# Query_time: 26  Lock_time: 0  Rows_sent: 106  Rows_examined: 106
use database;
SELECT `tag`
FROM (`tags`);

我的問題:有什么方法可以優化此查詢(這樣就不需要26s的時間來完成),或者這是Mysql服務器超載的明顯標志嗎? 如果我從共享主機升級到VPS,是否可以解決此問題?

如果您強迫它使用主鍵而不是進行全表掃描,則可能會更快。 如果您使用的是innodb,請嘗試SELECT tag FROM tags USE INDEX(PRIMARY) 另外,您也可以在查詢中添加WHERE tag_id > 0 據我了解,如果在查詢中未使用任何索引,則innodb會進行范圍掃描,這比索引掃描要昂貴得多。 如果您強迫它使用索引,它將掃描索引而不是查找表的所有行,這可能會更快。 不過,這里可能還有更多活動,我不像以前那樣精通mysql / innodb內部。

如果您不是,那么我會認為瓶頸還在其他地方(可能是HDD I / O)。 在那種情況下,升級到另一台服務器並不是唯一的解決方案(盡管它可以解決問題)。 如果該表不是不斷變化的(即每隔幾秒鍾變化一次),則可能值得使用某種內存緩存機制,例如memchached(還有其他)。 如果您遇到I / O問題,則可能值得研究使用內存緩存來存儲此表和/或其他表中的數據。 您可能會發現具有更快磁盤I / O的主機,但是無論如何對其進行切片,對磁盤進行讀寫都非常昂貴。 提出某種緩存過程可能是值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM