考虑这个例子 - 表 item
有两列,key
和 value
。数据如下:
> SELECT * FROM item;
key value
------------------
1 a
2 b
87 c
假设我们通过 1 到 100 之间的随机键进行 SELECT 查询,并且数据集很大。我的问题是:
InnoDB 是否以某种方式缓存“丢失”的键,以便它知道诸如 3 和 4 之类的键不存在,还是每次都必须转到磁盘?
如果我们用虚拟记录填充剩余的键值,性能会更好吗?
最佳答案
Innodb 将经常使用的页面存储在内存中,因此它不会在每次查询时都进入磁盘。内存缓冲区的大小在配置文件(通常是my.cnf)中定义,选项名称是innodb_buffer_pool_size。 Innodb 文件也可能被操作系统缓存。
如果服务器上有大量可用内存,请考虑将 innodb_buffer_pool_size 增加到适当的值。有关此的更多信息:http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
插入虚拟记录会使情况变得更糟——表格会更大。
关于mysql - InnoDB 是否缓存不存在的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908977/