key cache block的访问:
1,可以以共享读的方式访问;
2,一个block同时只能由一个session进行update;
3,如果需要从磁盘读入一个新的block,而导致要替换cache中的一个block,那么如果被替换的block是脏的,需要先flush。
另外,key_buffer_size设置不能太小,至少要能装下8个block。否则不使用buffer,仍然使用文件系统缓存。试试看key_cache浪费的空间有多少?key_buffer_size - key_cache_block_size*( Key_blocks_unused + Key_blocks_used )
key buffer的内存管理:
key buffer有两种内存管理方式,LRU和Midpoint Insertion Strategy。具体使用哪种,是根据key_cache_division_limit
的设置不同决定的。
我们先看较简单的LRU管理方式:当key_cache_division_limit
设置为100时,整个buffer就是一个LRU链表