Mysql 在内存中保留数据和索引数据-InnoDB与MyISAM
假设数据库由1GB数据和1GB索引数据组成 为了最大限度地减少磁盘IO,从而最大限度地提高性能,我想为MySQL分配内存,这样整个数据集(包括索引)都可以保存在RAM中(假设机器有大量RAM) InnoDB参数Mysql 在内存中保留数据和索引数据-InnoDB与MyISAM,mysql,database,performance,innodb,myisam,Mysql,Database,Performance,Innodb,Myisam,假设数据库由1GB数据和1GB索引数据组成 为了最大限度地减少磁盘IO,从而最大限度地提高性能,我想为MySQL分配内存,这样整个数据集(包括索引)都可以保存在RAM中(假设机器有大量RAM) InnoDB参数InnoDB_buffer_pool_size用于指定InnoDB用于缓存数据及其表索引的内存缓冲区大小。(注意:内存用于数据和索引。) MyISAM参数key\u buffer\u size用于指定MyISAM用于缓存其表索引的内存缓冲区的大小。(注意:内存仅用于索引。) 如果我想将2G
InnoDB_buffer_pool_size
用于指定InnoDB用于缓存数据及其表索引的内存缓冲区大小。(注意:内存用于数据和索引。)
MyISAM参数key\u buffer\u size
用于指定MyISAM用于缓存其表索引的内存缓冲区的大小。(注意:内存仅用于索引。)
如果我想将2GB数据库(1GB数据和1GB索引)放入InnoDB下的内存中,我只需将InnoDB\u buffer\u pool\u size
配置为2GB
。两个千兆字节将同时保存数据和索引
但是,当将MyISAM键设置为key\u buffer\u size
为2GB
时,该空间将用于索引,但不用于数据
我的问题是:
- MyISAM的“数据缓冲区大小”(不是索引数据)可以显式配置吗
- MyISAM何时从磁盘读取表数据(不包括索引数据),何时从内存读取
- 没有MyISAM没有通用数据缓存。这在“key\u buffer\u size”的描述中有记录:
这是因为MySQL依赖于操作系统来执行文件系统缓存以进行数据读取,因此您必须为文件系统缓存留出一些空间。
- 所以要回答你的第二个问题:永远不要