|
MariaDB的缓存配置
虽然服务器的硬件配置越来越高,但是读取磁盘的成本仍然是非常昂贵。如何使用缓存降低读取硬盘的成本是,在提高数据库的性能方面是非常重要的。
在这里简单介绍一下MariaDB的缓存相关参数。
参数 | 说明 | have_query_cache | 能否使用查询缓存 | query_cache_limit | 一个查询所能占用的缓存最大值,超过此设定的话查询结果讲不再被缓存。 | query_cache_min_res_unit | 分配内存块的最小单元,也就是每个查询所占用的最小内存空间大小。 | query_cache_size | 查询缓存所使用的内存大小,默认值为0,大小必须是1024的整数倍。 | query_cache_type | OFF:不进行缓存
ON:缓存SELECT SQL_NO_CACHE…以外的查询
DEMAND:仅限缓存SELECT SQL_CACHE…查询 | query_cache_wlock_invalidate | 控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。 | have_query_cache
MariaDB [(none)]> SHOW VARIABLES LIKE 'have_query_cache';+------------------+-------+| Variable_name | Value |+------------------+-------+| have_query_cache | YES |+------------------+-------+1 row in set (0.00 sec)query_cache_limit
MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache_limit';+-------------------+---------+| Variable_name | Value |+-------------------+---------+| query_cache_limit | 1048576 |+-------------------+---------+1 row in set (0.00 sec)query_cache_min_res_unit
SHOW VARIABLES LIKE 'query_cache_min_res_unit';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| query_cache_min_res_unit | 4096 |+--------------------------+-------+1 row in set (0.00 sec)query_cache_size
MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache_size';+------------------+-------+| Variable_name | Value |+------------------+-------+| query_cache_size | 0 |+------------------+-------+1 row in set (0.00 sec)query_cache_type
MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache_type';+------------------+-------+| Variable_name | Value |+------------------+-------+| query_cache_type | ON |+------------------+-------+1 row in set (0.00 sec)query_cache_wlock_invalidate
MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache_wlock_invalidate';+------------------------------+-------+| Variable_name | Value |+------------------------------+-------+| query_cache_wlock_invalidate | OFF |+------------------------------+-------+1 row in set (0.00 sec)确认查询缓存情况
如何确认一个数据库的查询缓存情况,如命中率如何,配置的内存是否妥当?
MariaDB提供了一系列的SHOW STATUS命令来确认当前的查询缓存状态。
参数 | 说明 | Qcache_free_blocks | 空闲的查询缓存空间(query_cache_min_res_unit数) | Qcache_free_memory | 空闲的查询缓存总量 | Qcache_hits | 命中查询缓存的次数 | Qcache_inserts | 更新查询缓存的次数,即没有命中缓存的次数 | Qcache_lowmem_prunes | 当查询缓存容量不够,删除一部分查询缓存释放查询缓存空间的次数 | Qcache_not_cached | 没有被缓存的SQL数,包括由于query_cache_type设置的不会被缓存的SQL语句 | Qcache_queries_in_cache | 目前在查询缓存中的SQL数 | Qcache_total_blocks | 查询缓存中的query_cache_min_res_unit数 | MariaDB [(none)]> SHOW STATUS LIKE 'Qcache%';+-------------------------+-------+| Variable_name | Value |+-------------------------+-------+| Qcache_free_blocks | 0 || Qcache_free_memory | 0 || Qcache_hits | 0 || Qcache_inserts | 0 || Qcache_lowmem_prunes | 0 || Qcache_not_cached | 0 || Qcache_queries_in_cache | 0 || Qcache_total_blocks | 0 |+-------------------------+-------+8 rows in set (0.00 sec)清除查询缓存
MariaDB [(none)]> RESET QUERY CACHE;Query OK, 0 rows affected (0.00 sec)
http://www.zabbix.cc/technic/1880/
|
|