Mysql
為什麼 TokuDB 說要刪除 innodb_buffer_pool_%?
TokuDB快速入門指南說“將表轉換為 TokuDB 後,應註釋掉與記憶體記憶體相關的全域選項(即:innodb_buffer_pool%)。”
如果 TokuDB 同時支持 TokuDB 和 InnoDB 數據庫引擎,我為什麼要註釋掉這些設置?
原因是您不希望 TokuDB 引擎和 InnoDB 引擎都擁有重量級表。
這兩個引擎都需要它們的資源。他們都非常聰明地管理自己範圍內的資源,但他們對彼此完全一無所知。
因此,雖然 InnoDB 可以在多個查詢執行之間協調其 I/O,但它並不知道 TokuDB 可能同時以某種方式使用磁碟。
特別是“將表轉換為 TokuDB 後,應註釋掉與記憶體記憶體相關的全域選項(即:innodb_buffer_pool%)。” 與您為 InnoDB 提供大部分作業系統可用記憶體的約定有關。在這種情況下,TokuDB 幾乎沒有記憶體可供操作。
在兩個引擎中都有大表的情況是不受歡迎的,並且很可能會導致兩個引擎的性能不佳。保留一些小的、不經常訪問的 InnoDB 表並分配少量記憶體就可以了。
我會小心地將它們全部註釋掉,以防某些預設值可能不受歡迎。
例如,我們混合了 MyISAM 和 TokuDB 表,因此我們為每個表配置了相同的設置,知道它們必須共存在一起(即 myisam 鍵記憶體大小,tokudb 記憶體大小)。