MySQL数据库的并发优化
时间:2014-11-23
在查询方面,MyISAM存储引擎的并发并没有太大的问题,而且性能非常高,如果觉得光靠Key Cache来缓存索引还不够快,还可以通过Query Cache功能来直接缓存Query的结果集.
但是,由于MyISAM存储引擎的表级锁定机制,以及读写互斥,其并发写的性能一直是让人比较头疼的问题,一般来说,我们能做的主要也就是只有以下几点了.
1.打开concurrent_insert的功能,提高INSERT操作和SELECT之间的并发处理,使二者尽可能并行,大部分情况下Concurrent_insert的值被设置为1,当表中没有删除记录留下的空余空间时可以在尾部并行插入,这其实也是MyISAM的默认设置,如果系统主要以写为主,特别是大量INSERT的时候,为了尽可能地提高INSERT的效率,可以将concurrent_insert设置为2,也就是告诉MyISAM,不管在表中是否有删除行留下的空余空间,都在尾部进行并发插入,使INSERT和SELECT互不干扰.
2.控制写入操作的大小,尽量让每次写入操作都能很快完成,以防止时间过长的阻塞动作.
3.通过浪费读取效率来提高写入效率,为了尽可能地让写入更快,可以适当调整读和写的优先级别,让写入操作的优先级高于读操作的优先级.
对于一个表级锁定的存储引擎来说,除了concurrent_insert比较特殊之外,基本上都是只能串行描写,所以虽然上面给出了三点建议,但是后两点只能算优化建议,并不是真正意义上的并发优化建议.