MySQL
4.1以上版本为这个问题提供了一种解决方案:它支持我们建立多个键缓存,并允许我们把某张数据表的索引指定并且预先装入某个缓存。如果你的数据表使用得很频繁,并且你有足够的内存,能够把它的索引载入缓存中,那么这种操作就是有用的。这种能力允许你同时避免同一张表和不同的表的争用:建立一个足够大的缓存,让它保存数据表的全部索引,并且指定该缓存专门用于那张数据表。在键被载入缓存之后,不在需要磁盘I/O操作。同时,键值永远不会被丢弃,对数据表的键的查看操作可以在内存中完成。
mysql>
SET GLOBAL member_cache.key_buffer_size =
1024*1024;
2.给数据表指定键缓存:
mysql> CACHE INDEX member IN
member_cache; +---------------+--------------------+----------+----------+ |
Table | Op | Msg_type | Msg_text
| +---------------+--------------------+----------+----------+ |
sampdb.member | assign_to_keycache | status | OK
| +---------------+--------------------+----------+----------+
3.把数据表索引预先读入它的键缓存中:
mysql>
LOAD INDEX INTO CACHE
member; +---------------+--------------+----------+----------+ | Table |
Op | Msg_type | Msg_text
| +---------------+--------------+----------+----------+ | sampdb.member |
preload_keys | status | OK
|+---------------+--------------+----------+----------+