假定數據庫由1 GB數據和1 GB索引數據組成。在內存中保存數據和索引數據 - InnoDB與MyISAM
爲了最大限度地減少磁盤IO,從而最大限度地提高性能我想分配內存到MySQL,以便包括索引在內的整個數據集可以保存在RAM中(假定機器內存豐富)。
InnoDB參數innodb_buffer_pool_size
用於指定內存緩衝區的大小,InnoDB用來緩存其表中的數據和索引。 (注意:內存用於數據和索引。)
MyISAM參數key_buffer_size
用於指定內存緩衝區MyISAM用來緩存其表的索引的大小。 (注:使用內存ONLY的指標。)
如果我想要的2 GB的數據庫(1點GB的數據和1 GB指數)以適合InnoDB的內存下,我會簡單地配置innodb_buffer_pool_size
是2GB
。兩千兆字節將保存數據和索引。
但是,當將MyISAM密鑰key_buffer_size
設置爲2GB
時,該空間將用於索引,但不用於數據。
我的問題是:
- 能MyISAM數據的 「數據緩衝區大小」(未索引數據)被明確配置?
- MyISAM何時從磁盤讀取表數據(不包括索引數據)以及何時從內存讀取數據?