码迷,mamicode.com
首页 > 数据库 > 详细

MySQL启动参数(二) —— key_buffer_size

时间:2016-04-26 22:19:54      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:mysql   key_buffer_size   

为了最小化磁盘的IO,MyISAM存储引擎的表使用key cache来缓存索引块,索引块的缓存大小由key_buffer_size参数来设置,如果数据库中使的表以MyISAM存储引擎为主,则应该适当增加该参

数的值,以便尽可能的缓存索引块,提高访问的速度。

默认情况下,所有的索引都使用相同的key cache,当访问的索引不在缓存中时,使用LRU(Least Recently Used最近最少使用)算法来替换缓存中最近最少使用的索引块,为了进一步避免对key cache的争用,从MSQL5.1开始,可以设置多个key cache,并为不同的索引键指定使用的key cache。

记住:key_buffer_size只能在MyISAM存储引擎使用。




show variables like ‘key_buffer_size‘ —— 显示默认key cache的大小

set global key_buffer_size=102400 —— 设置默认key cache的大小

技术分享


set global my_cache1.key_buffer_size = 204800 —— 设置自定义key cache的大小,my_cache1可以修改为其他名称,该名称就是这个key cache的名称

select @@global.my_cache1.key_buffer_size —— 显示自定义key cache的大小,如果要删除这个缓存,只需把大小设置成0就可以了

技术分享


上面我们创建了两个自定义的缓存:my_cache1和my_cache2。下面我们在创建两张表来演示如何将索引加入缓存。

table1:

技术分享

技术分享

table2:

技术分享

技术分享


cache index table1, table2 in my_cache1 —— 把table1和table2中所有的索引放入my_cache1缓存。其实这里并不是马上就把索引放到缓存,而只是告诉数据库table1和table2的索引要放入名为my_cache1缓存,等使用该索引查询时才放入,或者用LOAD INDEX INTO CACHE命令预先载入。

技术分享


cache index table1 index (table1_index_id) in my_cache1 —— 把table1中名为table1_index_id的索引放入my_cache1缓存,这样可以把表的不同索引放入不同缓存。跟上面一样并不是马上就把索引放到缓存,只是建立一个索引和缓存之间的关联。

技术分享


通常在数据库刚刚启动的时候,需要等待索引被缓存到缓存区中,这段时间据库会因为缓存命中率低而导致访问效率不高。这个时候我们就可以通过LOAD INDEX INTO CACHE命令将索引预加载至缓存区中。具体的操作方式是:

load index into cache table1 —— 把table1中所有的索引加载进缓存,如果索引已经关联了一个缓存则放入该缓存;如果没有,则放入系统默认缓存。

技术分享


load index into cache table1 index (table1_index_id) —— 把table1中名为table1_index_id的索引加载进缓存

技术分享




注意:默认的缓存key_buffer_size是无法删除的。如果你自定义的缓存被删除,那加载到该缓存的索引会被重新加载到默认缓存。



本文出自 “銅鑼衛門” 博客,请务必保留此出处http://jaeger.blog.51cto.com/11064196/1767975

MySQL启动参数(二) —— key_buffer_size

标签:mysql   key_buffer_size   

原文地址:http://jaeger.blog.51cto.com/11064196/1767975

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!