作者:山中幽水_418 | 来源:互联网 | 2013-08-07 09:25
在Mysql中,为了让系统刚启动之后不至于因为cache中没有任何数据和而出现短时间的负载过高或者是响应不够及时的问题。mysql提供了索引缓存加载功能,可以通过相关命令
简述
在Mysql中,为了让系统刚启动之后不至于因为cache中没有任何数据和而出现短时间的负载过高或者是响应不够及时的问题。
mysql提供了索引缓存加载功能,可以通过相关命令(LOAD INDEX INTO CACHE tb_name_list...),将该表的所有索引都加载到内存中。
而且还可以通过相关参数的设置,控制是否只load根节点和枝节点还是将页节点全部load进来,主要是为key cache的容量考虑。
==========================================================================================
操作详解
实例
mysql@sky:~$cat /usr/local/mysql/etc/init.sql
SET GLOBAL hot_cache.key_buffer_size=16777216
SET GLOBAL cold_cache.key_buffer_size=16777216
CACHE INDEX example.top_message in hot_cache
CACHE INDEX example.event in cold_cache
LOAD INDEX INTO CACHE example.top_message,example.event IGNORE LEAVES
LOAD INDEX INTO CACHE example.user IGNORE LEAVES,exmple.groups
分析
这里我的init file 中首先设置了两个Key Cache(hot cache 和cold cache)各为16M
然后分别将top_message 这个变动很少的表的索引Cache 到Hot Cache
再将event 这个变动非常频繁的表的索引 Cache 到了Cold Cache 中
最后再通过LOAD INDEX INTO CACHE 命令预加载了top_message,groups 这 两个表所有索引的所有节点以及event 和user 这两个表索引的非叶子节点数据到Key Cache 中,以提高系统启动之初的响应能力。