MyISAM的Concurrent Insert

MyISAM中读写是相互阻塞的锁,很多人误认为MyISAM存储引擎是完全串行化,没有办法并行的,实际上,MyISAM中提供了一个非常有用的特性,就是Concurrent Insert。

在my.cnf中对Concurrent Insert可以进行配置,有三个可选值:0,1,2.

1) concurrent _insert =0 ,无论MyISAM的表数据文件中间是否存在因为删除而留下俄空闲空间,都不允许concurrent insert。

2)concurrent_insert = 1,是当MyISAM存储引擎表数据文件中间不存在空闲空间的时候,从文件尾部进行Concurrent Insert。

3)concurrent_insert = 2,  无论 MyISAM存储引擎的表数据文件的中间部分是否存在因为删除而留下的空闲空间,都允许在数据文件尾部进行concurrent insert操作。

从以上的赋值说明可以得出,在删除操作不是很多的情况下,可以选用 concurrent_insert =2  ,这样可以增大并发速度,但是会浪费一部分数据文件的空间,因为中间删除的空隙得不到数据填充。这个浪费在删除操作较多的情况下是非常可观的,所以在删除操作较多的情况下应该选用concurrent_insert =1,当然,假如你的对空间不是特别在乎,而且能很好的处理备份问题,选用concurrent_insert =2显然能提高你的MyISAM的并发读写能力。

相关文章


Post a Comment