Key Cache的Mutex问题
时间:2014-11-21
MySQL索引缓存是所有线程共享的全局缓存,当多纯种同时并发读取某一个Cache Block的时候并不会有任何问题,每个线程都可以同时读取这个Cache Block,但是当某个Cache Block正在被一个线程更新或读入时,这个线程就会通过mutex锁定这个Cache Block,以达到不允许其他纯种同时更新或读取的目的,所以在高并发的环境下,如果Key Cache的大小不够充足非常容易因为Cache Block的Mutex问题造成严重的性能影响,而且在目前正式发行的所有MySQL版本中,Mutex的处理机制存在一定的问题,当Active线程数量稍微高一些的时候,就非常容易出现Cache Block的Mutex问题,甚至有人将此性能作为Bug报告给了MySQL AB公司.