MariaDB 的 QCache_hits 和 Com_select 一起增加。
例如。
MySQL
- 显示全局状态 - Com_select 为 0。Qcache_hits 为 0。
- 第一次选择:从 id = 1 的 test_table 中选择 * - Com_select 为 1。Qcache_hits 为 0。
- 第二次选择:从 id = 1 的 test_table 中选择 * - Com_select 为 1。 Qcache_hits 为 1。
- 第三次选择:从 id = 1 的 test_table 中选择 * - Com_select 为 1。Qcache_hits 为 2。
玛丽亚数据库
- 显示全局状态 - Com_select 为 0。Qcache_hits 为 0。
- 第一次选择:从 id = 1 的 test_table 中选择 * - Com_select 为 1。Qcache_hits 为 0。
- 第二次选择:从 id = 1 的 test_table 中选择 * - Com_select 为 2。 Qcache_hits 为 1。
- 第三次选择:从 id = 1 的 test_table 中选择 * - 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]>