前一段时间为非公经济人物做了一个投票的程序,因为事先没有考虑大并发量,所以没有使用读写分离,导致在开始投票后并发量较大,mysql的效率特别查,非常慢,找了好长时间的原因,发现是MySQL的AUTO_INCREMENT将导致整个数据库读写慢.找到原因了解决办法就简单多了,只需要使用php【strtoupper ( md5 ( uniqid ( rand (), true ) ) ); 】生成id,取消mysql的AUTO_INCREMENT,问题自然就解决了,在这里记录一下。
备注:在高并发情况下,MySQL的AUTO_INCREMENT将导致整个数据库慢。如果存在自增字段,MySQL会维护一个自增锁,innodb会在内存里保存一个计数器来记录auto_increment值,当插入一个新行数据时,就会用一个表锁来锁住这个计数器,直到插入结束。如果是一行一行的插入是没有问题的,但是在高并发情况下,那就悲催了,表锁会引起SQL阻塞,极大的影响性能,还可能会达到max_connections值。