programing

MySQL이 캐시하는 쿼리를 MariaDB가 캐시하지 않습니까?

javamemo 2023. 8. 28. 20:42
반응형

MySQL이 캐시하는 쿼리를 MariaDB가 캐시하지 않습니까?

데이터베이스(MySQL 5.1.73)를 새 서버로 마이그레이션하고 mariadb(5.5.5-10)로 바꾸려고 합니다.전 세계적으로 mariadb는 훨씬 빨라 보이지만 mysql이 어디에 있는지 캐시하기를 거부하는 몇 가지 쿼리가 있습니다.이러한 쿼리는 LOTS를 사용하기 때문에 큰 문제입니다(홈 페이지에는 일종의 LOTS가 있으므로 사용자가 상호 작용할 때마다 거의 실행됩니다).

저는 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          |
    +------------------------------+------------+

그리고 마리애드본은

+--------------------------------+----------------------+
| 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

언급URL : https://stackoverflow.com/questions/40266048/mariadb-not-caching-queries-that-mysql-does

반응형