前一段時間為非公經濟人物做了一個投票的程式,因為事先沒有考慮大并發量,是以沒有使用讀寫分離,導緻在開始投票後并發量較大,mysql的效率特别查,非常慢,找了好長時間的原因,發現是MySQL的AUTO_INCREMENT将導緻整個資料庫讀寫慢.找到原因了解決辦法就簡單多了,隻需要使用php【strtoupper ( md5 ( uniqid ( rand (), true ) ) ); 】生成id,取消mysql的AUTO_INCREMENT,問題自然就解決了,在這裡記錄一下。
備注:在高并發情況下,MySQL的AUTO_INCREMENT将導緻整個資料庫慢。如果存在自增字段,MySQL會維護一個自增鎖,innodb會在記憶體裡儲存一個計數器來記錄auto_increment值,當插入一個新行資料時,就會用一個表鎖來鎖住這個計數器,直到插入結束。如果是一行一行的插入是沒有問題的,但是在高并發情況下,那就悲催了,表鎖會引起SQL阻塞,極大的影響性能,還可能會達到max_connections值。