当我在mysql中禁用查询缓存时,查询仍然被缓存。据我了解这是因为OS文件系统缓存。如何防止文件系统缓存这些数据。我在开发WIndows 7,但它可能是Linux。防止MySQL查询的文件系统缓存
回答
那么现在我可以自己回答我的问题。为防止缓存第二次和下一次查询需要设置innodb_buffer_pool_size = 0配置选项。这个由mysql用来将数据交换到内存中的缓冲区,以及所有下一个查询都使用内存而不是HD进行操作。
MySQL中没有查询文件系统缓存。
当我禁用MySQL查询缓存,查询仍缓存
你如何禁用它,你怎么知道的查询仍缓存?为什么你不希望他们被缓存?
我正在运行查询 mysql> SHOW GLOBAL STATUS LIKE'Qcache%'; 并且它返回所有零值,这意味着没有启用查询缓存。 下一个正在运行的查询对20.000行的表 mysql> SELECT COUNT(*)FROM bigtable; 返回1行(2.55秒) 再次运行 mysql> SELECT COUNT(*)FROM bigtable; 返回集中的1行(0.52秒) 等 --- 我不想使用缓存,因为我需要运行相同的查询进行基准测试。 – Dima 2010-02-08 14:13:19
当您在ISAM表上创建COUNT(*)时,只会读取表头。实际的行数存储在表头中并快速获取。它被缓存在Windows文件缓存中。这与查询缓存没有关系。 – 2010-02-08 16:00:19
恩,count(*)不是很好的例子。我使用InnoDb表,查询可能是选择*或选择ID或其他任何。 – Dima 2010-02-08 16:18:46
SET SESSION query_cache_type = OFF;
您需要缓冲池比您的数据(Innodb TableSpaces的总大小)大一点(比如10%),因为它不仅包含数据页 - 它还包含自适应哈希索引,插入缓冲区,还需要一些锁时间。虽然它并不重要 - 对于大多数工作负载,如果您的Innodb缓冲池比数据库大小小10%,那么您不会失去太多的优势
- 1. 缓存问题MySQL或文件系统
- 2. MySQL操作系统缓存
- 3. MySQL查询缓存
- 4. 缓存MySQL查询
- 5. 文件系统查询
- 6. 防止缓存单个js文件
- 7. mySQL查询队列系统
- 8. 防止Gearman耗尽系统内存
- 9. BufferedReader和文件系统缓存
- 10. LRU用于文件系统缓存吗?
- 11. crossdomain.xml防止缓存
- 12. 防止缓存Ajax
- 13. 防止web2py缓存?
- 14. 防止主义的查询缓存中的Symfony
- 15. 如何防止CRM 2011 SDK中的查询缓存?
- 16. 缓存mysql查询结果?
- 17. web.py mysql查询缓存
- 18. PHP或MySQL缓存查询
- 19. MySQL刷新查询缓存
- 20. MySQL查询缓存,复杂SQL查询
- 21. 查询验证防作弊系统
- 22. MVC 3防止部分查看缓存
- 23. Hibernate - HQL查询产生的SQL是否被hibernate系统缓存?
- 24. 带搜索查询选项的缓存系统
- 25. 防止在Rails中缓存随机SQL查询
- 26. MySQL优化 - 防止子查询
- 27. 文件系统信息 - 如何查询?
- 28. 如何快速查询文件系统?
- 29. 防止200(缓存)响应
- 30. 防止在CloudFlare中缓存
您如何知道缓存的内容,以及有什么问题?请提供具体信息。 – Henning 2010-02-08 12:17:51
我正在运行查询 mysql> SHOW GLOBAL STATUS LIKE'Qcache%'; 并且它返回所有零值,这意味着没有启用查询缓存。 下一个正在运行的查询对20.000行的表 mysql> SELECT COUNT(*)FROM bigtable; 返回1行(2.55秒) 再次运行 mysql> SELECT COUNT(*)FROM bigtable; 返回集中的1行(0.52秒) 等 --- 我不想使用缓存,因为我需要运行相同的查询进行基准测试。 – Dima 2010-02-08 14:12:52