我有一个非常简单的问题......
为什么 MySQL 查询缓存默认是禁用的?
在大多数 MySQL 软件包版本中,我遇到的默认值是:
query_cache_type = 1
query_cache_size = 0
这实际上默认禁用了查询缓存。
还有许多其他缓冲区和限制,它们都设置了合理的默认值。既然查询缓存对应用程序完全透明,为什么要禁用它呢?
我发现每次部署新的 MySQL 盒时都会自动启用查询缓存和慢查询日志,所以我很好奇默认的逻辑。
答案1
它并不总是默认禁用(这取决于版本和分销商),但这样做有一个很好的理由:启用查询缓存并不总是对性能更好,并且在较大的缓存大小下,它实际上可能会损害性能,因为缓存修剪(将较少使用的数据从内存中推出以让位给新条目)需要更长的时间。当失效和修剪所花的时间比查询执行所花的时间长时,您就会遇到严重的问题。
这也不是解决性能问题的灵丹妙药。这里:
查询缓存非常适合某些应用程序,通常是有限规模部署的简单应用程序或处理小数据集的应用程序。
默认情况下禁用查询缓存的最明显(警告较多)的原因是分销商会转移因默认设置而可能引发的批评,而默认设置可能会导致应用程序出现性能问题。
这是关于MySQL 查询缓存