不使用缓冲池运行SELECT

时间:2015-01-20 15:56:03

标签: mysql innodb

InnoDB可以在不将数据保存到缓冲池的情况下运行SELECT吗?我有大约20%的SELECT只读取数据一次,浪费了大约40%的缓冲池。因此,始终从磁盘读取此数据是有意义的。对于查询缓存是很好的SQL_NO_CACHE,但我不知道缓冲池的内容。

1 个答案:

答案 0 :(得分:0)

您无法显式分配将影响InnoDB缓冲池的表格。但是,您可以使用以下两个选项麻痹MySQL启动时缓冲池页面的旋转:

innodb_old_blocks_pct

  

指定用于旧块子列表的InnoDB缓冲池的近似百分比。值的范围是5到95.默认值是37(即池的3/8)。有关更多信息,请参见第14.16.2.3节“使缓冲池抗扫描”。有关缓冲池管理的信息,请参见第8.9.1节“InnoDB缓冲池”,例如LRU算法和驱逐策略。

innodb_old_blocks_time

  

指定插入旧子列表的块在首次访问后必须保留多长时间(毫秒),然后才能将其移动到新子列表中。如果值为0,则无论插入访问后多久发生,插入旧子列表的块在第一次访问时立即移动到新子列表。如果该值大于0,则块保留在旧子列表中,直到在第一次访问后至少那么多ms发生访问。例如,值1000会导致块在第一次访问后保留在旧子列表中1秒钟,然后才有资格移动到新子列表。