[英]How to Tune Storage engine of MySQL
我的數據庫只有 500 萬行,但是內部連接和 IN 需要很長時間(55 秒、60 秒)。 所以我正在檢查我的 MyISAM 設置是否有問題。
查詢: SHOW STATUS LIKE 'key%'
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 275029 |
| Key_blocks_used | 3316428 |
| Key_read_requests | 11459264178 |
| Key_reads | 3385967 |
| Key_write_requests | 91281692 |
| Key_writes | 27930218 |
+------------------------+-------------+
給我你提高 MyISAM 性能的建議
我使用過超過 45GB 的數據庫,我也遇到了性能問題,
以下是我為提高性能而采取的一些措施。
(1) 刪除表上任何不必要的索引,特別注意 UNIQUE 索引,因為它們禁用更改緩沖。 如果沒有理由限制,請不要使用 UNIQUE 索引; 更喜歡常規的 INDEX。
(2)按順序插入會導致分頁較少(對不在內存中的表性能更差),批量加載與表大小沒有特別關系,但有助於降低重做日志壓力。
(3) 如果批量加載新表,則延遲創建除 PRIMARY KEY 之外的任何索引。 如果在加載所有數據后創建它們,則 InnoDB 能夠應用預排序和批量加載過程,這既更快又通常會產生更緊湊的索引。 這種優化在 MySQL 5.5 中實現了。
(4) 確保使用 InnoDB 而不是 MyISAM。 MyISAM 可以更快地插入到表的末尾。 Innodb 是行級鎖,MYISAM 是表級鎖
(5) 盡量避免在頻繁更新的 MyISAM 表上進行復雜的 SELECT 查詢,並使用像第一個條件返回較少結果的查詢
(6)對於頻繁變化的MyISAM表,盡量避免所有變長列(VARCHAR、BLOB、TEXT)。 如果表包含單個可變長度列,則該表使用動態行格式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.