簡體   English   中英

如何調優 MySQL 的存儲引擎

[英]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.

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