微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mariaDB没有缓存mysql缓存的查询

我正在将我的数据库(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                  |
+--------------------------------+----------------------+

解决方法:

有许多不同的“缓存”;并非所有人都在他们的名字中“缓存”.最重要的是innodb_buffer_pool_size.只有当您使用InnoDB(您应该使用)而不是MyISAM时,这一个才是重要的.此外,升级过程中各个表的引擎是否已更改?

检查表Engines和buffer_pool_size,然后报告回来.顺便说一句,buffer_pool应该是可用内存的70%左右.并向我们​​展示非缓存查询以及SHOW CREATE TABLE.

我看到Query缓存的设置方式相同.但是,这通常对活动的生产服务器不利.但这是另一个话题.

“放弃替代” – 主要是.但是,正如你所发现的,它在某些方面“更快”,在其他方面“更慢”.即使您从MysqL 5.1迁移到MysqL 5.5,您可能会看到类似的更好/更糟的情况.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐