AWS RDS mysql 5.7
当前查询缓存在 Aurora mysql 上默认启用。(16GB 查询缓存大小,在 300GB RAM 上)。我面临着来自 Hangfire 的一些死锁,并且它没有显示任何具有查询缓存锁的信息。
有 2 篇博客文章似乎与查询缓存功能相矛盾。
一个说启用查询缓存,另一个说禁用查询缓存。AWS 对查询缓存的官方立场是什么?在一般 RDS 中禁用查询缓存是否更好?
AWS RDS mysql 5.7
当前查询缓存在 Aurora mysql 上默认启用。(16GB 查询缓存大小,在 300GB RAM 上)。我面临着来自 Hangfire 的一些死锁,并且它没有显示任何具有查询缓存锁的信息。
有 2 篇博客文章似乎与查询缓存功能相矛盾。
一个说启用查询缓存,另一个说禁用查询缓存。AWS 对查询缓存的官方立场是什么?在一般 RDS 中禁用查询缓存是否更好?
MySQL 8.0 之后为什么去掉了查询缓存功能?
我的客户在 Ubuntu16.04 上运行 MySQL 5.7.16 作为 Wordpress 站点的后端。大量繁重、糟糕的 SQL 语句。通过启用 MySQL 缓存,我能够显着改善情况,慢查询日志现在几乎是空的。但是 - 某些查询不使用缓存,我不明白为什么。SQL 使用两个非常静态的表,所以它不是缓存失效。知道我该如何调试吗?
TIA,维塔利
1) SHOW STATUS LIKE "qcache%";
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1700 |
| Qcache_free_memory | 49555584 |
| Qcache_hits | 17960465 |
| Qcache_inserts | 6928571 |
| Qcache_lowmem_prunes | 1850967 |
| Qcache_not_cached | 924283 |
| Qcache_queries_in_cache | 13303 |
| Qcache_total_blocks | 28441 |
+-------------------------+----------+
2)SQL示例:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
LEFT JOIN wp_postmeta
ON ( wp_posts.ID = wp_postmeta.post_id )
LEFT JOIN wp_postmeta AS mt1
ON (wp_posts.ID = mt1.post_id
AND mt1.meta_key = '_pagefrog_fbia_status' )
WHERE 1=1
AND ( ( wp_postmeta.meta_key = '_pagefrog_fbia_status'
AND wp_postmeta.meta_value = '1' )
OR mt1.post_id IS NULL
OR ( wp_postmeta.meta_key = '_pagefrog_fbia_status'
AND wp_postmeta.meta_value = '' ) )
AND wp_posts.post_type = 'post'
AND ((wp_posts.post_status = 'publish'))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 10
附加物
SHOW VARIABLES LIKE '%query_cache%';
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 83886080 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+-----------------------------+----------+
如果从 MySQL 命令行执行查询,然后KILL
在它运行时对其进行编辑,查询及其部分结果*是否会在查询缓存中并可用于相同查询的后续运行?
为简单起见,假设这是一个SELECT
没有子查询的普通查询。
此页面上的排除列表涵盖查询不会被缓存的情况,例如查询表在执行之间更改,以及某些本质上不相同的操作,但我没有在任何地方看到中断或终止的查询。被杀死的查询一定不能被视为与运行完成的查询相同,但如果它满足所有其他缓存条件,它在被杀死之前就已经被缓存*,所以我想知道接下来会发生什么。
MySQL 5.6
*我在这里做了几个假设。