Mysql
MySQL中小型查找表的最佳引擎
我有以下問題:我正在設計帶有幾十個小型查找表的 Web 應用程序:這些表通常包含三列(ID、名稱、描述)和幾行(大多少於 50,最大值約為 450)。
這些查找表預計很少更改(它們來自標準,幾年更改一次)並且僅用於:
- 在 html select 中填充選項
- 在報告中加入其他記錄
99% 的情況下,這些表上只會有
SELECT
語句,但會有很多。我想知道,使用哪個數據庫引擎最有效?
以下是我的考慮:
記憶
- 親:非常快
- 缺點:如果伺服器崩潰,所有數據都會失去,需要重新創建
- 缺點:不支持外鍵
壓縮的 MyISAM
- 親:快
- 缺點:不支持外鍵
InnoDB
- pro:外鍵支持
我想問的是,使用與InnoDB不同的東西是否會有顯著優勢- 性能方面
謝謝,茲比尼克
我在 2011 年 8 月回答了一個類似的問題:哪種 DBMS 適合超快速讀取和簡單的資料結構?
由於您在詢問 MySQL 和哪個儲存引擎。老實說,這很難說,因為在 SELECT 方面 MyISAM 很少能勝過 InnoDB。
這是我過去關於這個爭議的一些文章
Sep 20, 2011
:最好的 MyISAM 和 InnoDBMay 03, 2012
: InnoDB 和 MyISAM 哪個更快?Jul 05, 2012
: InnoDB vs MyISAM 有很多索引Sep 26, 2012
:為這些項目需求選擇 MyISAM 而不是 InnoDB;和長期選擇您現在可能會問:為什麼我會偏愛 MyISAM 而不是 InnoDB?
看看這張圖(由 Percona 首席技術官 Vadim Tkachenko 創建)
MyISAM 將記憶體索引,您的表將有 2 個索引(id 上的主鍵和名稱索引)。另一方面,InnoDB 有太多的移動元件無法容納,尤其是在 InnoDB 緩衝池必須定期載入和關閉 16K 頁面的情況下。
公平地說,你應該做一個實驗。
- 轉到我的文章InnoDB 和 MyISAM 之間的主要區別是什麼?. 仔細閱讀。
- 使用 MyISAM 設置伺服器並使用所有表
ROW_FORMAT=Fixed
(請參閱我的文章What is the performance impact of using CHAR vs VARCHAR on a fixed-size field?)並使用大的key_buffer_size。- 使用 InnoDB 和大的innodb_buffer_pool_size設置另一台伺服器。
- 將您的數據添加到兩個伺服器並瘋狂地查詢它們。
這將為您提供數據集的儲存引擎選擇的最佳評估。
試一試 !!!