programing

MariaDB의 Qcache_hits와 Com_select가 함께 증가합니다.

minecode 2023. 2. 3. 20:53
반응형

MariaDB의 Qcache_hits와 Com_select가 함께 증가합니다.

MariaDB의 QCache_hits와 Com_select가 함께 증가합니다.

예를들면.

MySQL

  • show global status - Com_select는 0 입니다.Qcache_hits는 0입니다.
  • 첫 번째 선택 : test_table에서 *를 선택합니다.ID = 1 - Com_select는 1입니다.Qcache_hits는 0입니다.
  • 두 번째 선택 : test_table에서 *를 선택합니다.ID = 1 - Com_select는 1입니다.Qcache_hits는 1입니다.
  • 세 번째 선택 : test_table에서 *를 선택합니다.ID = 1 - Com_select는 1입니다.Qcache_hits는 2입니다.

마리아DB

  • show global status - Com_select는 0 입니다.Qcache_hits는 0입니다.
  • 첫 번째 선택 : test_table에서 *를 선택합니다.ID = 1 - Com_select는 1입니다.Qcache_hits는 0입니다.
  • 두 번째 선택 : test_table에서 *를 선택합니다.ID = 1 - Com_select는 2입니다.Qcache_hits는 1입니다.
  • 세 번째 선택 : test_table에서 *를 선택합니다.ID = 1 - Com_select는 3입니다.Qcache_hits는 2입니다.

캐시가 히트했을 때 Com_select의 수가 증가해도 그 이유는 무엇입니까?

내 환경은 Ubunut 12.04(x64)와 MariaDB 5.5.35입니다.


MariaDB [test]> show global status where Variable_name in ('Com_select', 'Qcache_hits');

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select    | 79    |
| Qcache_hits   | 6     |
+---------------+-------+
2 rows in set (0.00 sec)

MariaDB [test]> insert into testtable values (11, 3);
Query OK, 1 row affected (0.00 sec)<br/>

MariaDB [test]> select * from testtable where id = 11;
+----+------+
| id | name |
+----+------+
| 11 |    3 |
+----+------+
1 row in set (0.00 sec)

MariaDB [test]> show global status where Variable_name in ('Com_select', 'Qcache_hits') ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select    | 80    |
| Qcache_hits   | 6     |
+---------------+-------+
2 rows in set (0.00 sec)

MariaDB [test]> select * from testtable where id = 11;
+----+------+
| id | name |
+----+------+
| 11 |    3 |
+----+------+
1 row in set (0.00 sec)

MariaDB [test]> select * from testtable where id = 11;
+----+------+
| id | name |
+----+------+
| 11 |    3 |
+----+------+
1 row in set (0.00 sec)

MariaDB [test]> show global status where Variable_name in ('Com_select', 'Qcache_hits') ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select    | 82    |
| Qcache_hits   | 8     |
+---------------+-------+
2 rows in set (0.00 sec)

MariaDB [test]>

이것을 MariaDB 5.5.39 및 10.0.14로 확인할 수 있습니다.이것이 의도적인 변경인지는 확실하지 않지만(IMHO의 MariaDB 동작이 더 정확합니다), 적어도 MariaDB 기술 자료에서 이 섹션에 따르면 MySQL과 같은 방식으로 동작해야 합니다.

쿼리 캐시에서 반환된 쿼리는 Com_select 상태 변수를 증가시키지 않으므로 서버에서 실행되는 유효한 쿼리의 총 수를 찾으려면 Qcache_hits에 Com_select를 추가합니다.

( https://mariadb.com/kb/en/mariadb/documentation/optimization-and-tuning/buffers-caches-and-threads/query-cache/ )

그래서 이 버그 보고서를 제출했습니다.

https://mariadb.atlassian.net/browse/MDEV-7216

언급URL : https://stackoverflow.com/questions/21902675/mariadbs-qcache-hits-and-com-select-increase-together

반응형