我将我的数据库(MySQL 5.1.73)迁移到新服务器,我正在尝试用mariadb(5.5.5-10)替换它。全局mariadb似乎要快得多,但有一些查询拒绝缓存mysql所在的位置。 这是一个很大的问题,因为这些查询使用很多(主页上有一些类型,因此每次用户交互时都会执行这些查询)。
我认为mariadb是mysql的替代品,所以我对这种行为感到惊讶?任何人都知道为什么会出现这种不同的行为或如何强制使用缓存(我尝试SELECT SQL_CACHE
但这并没有改变任何事情。
这是mysql配置
+------------------------------+------------+
| Variable_name | Value |
+------------------------------+------------+
| binlog_cache_size | 32768 |
| have_query_cache | YES |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| max_binlog_cache_size | 4294963200 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| table_definition_cache | 256 |
| table_open_cache | 64 |
| thread_cache_size | 8 |
+------------------------------+------------+
和mariadb一个
+--------------------------------+----------------------+
| Variable_name | Value |
+--------------------------------+----------------------+
| aria_pagecache_age_threshold | 300 |
| aria_pagecache_buffer_size | 134217728 |
| aria_pagecache_division_limit | 100 |
| aria_pagecache_file_hash_size | 512 |
| binlog_cache_size | 32768 |
| binlog_stmt_cache_size | 32768 |
| have_query_cache | YES |
| host_cache_size | 228 |
| innodb_disable_sort_file_cache | OFF |
| innodb_ft_cache_size | 8000000 |
| innodb_ft_result_cache_limit | 2000000000 |
| innodb_ft_total_cache_size | 640000000 |
| join_cache_level | 2 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| key_cache_file_hash_size | 512 |
| key_cache_segments | 0 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| metadata_locks_cache_size | 1024 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_strip_comments | OFF |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| stored_program_cache | 256 |
| table_definition_cache | 400 |
| table_open_cache | 400 |
| thread_cache_size | 100 |
+--------------------------------+----------------------+
查询:
SELECT sum(amount) AS amount
,ADDDATE( SUBDATE( tran_date
, DAYOFMONTH(tran_date)-1
)
, INTERVAL 12 MONTH
) AS trans_date
FROM 0_gl_trans
WHERE account IN (1100) AND amount < 0
AND (tran_date > '2010-10-26' AND tran_date < '2015-10-26')
GROUP BY trans_date