innodb_pool_buffer_size对innodb性能的影响有哪些?innodb_pool_buffer_size是影响innodb性能最重要的参数,指的是innodb缓冲的大小。一般来说,它越大Innodb的吞吐量(单位: tps)就越高。所以,在不影响服务器上其他程序正常工作的情况下,这个值总是越大越好。
但是当innodb做crash recovery的时候,大的pool buffer会让recovery奇慢无比。 一种折衷的解决方法就是:启动的时候用小的pool buffer,恢复完成以后改用大的pool bufer。
为什么小的pool buffer能加快恢复的速度?
用Oprofile跟踪恢复的过程发现,Flush_List中页的插入排序耗掉了大多的时间,大的Pool buffer会让Flush list中的脏页越来越多,而插入排序的时间复杂度是O(N^2)。 相反,小的pool buffer会让flush list的脏page及时flush,这样flush list里面的脏页数目总是不会很大,有新的脏数据按序插入就不会有大的开销。