一、 分區問題
MySQL的分區對按照分區鍵進行的查詢操作沒有優化處理;
為了提高統計操作的效率,需要增加對分區鍵的索引。但是對分區表的分區字段值進行比較會產生錯誤結果,例如進行max查詢,按照分區字段的索引進行倒序的查詢,都會返回錯誤的結果。(版本5.1.9, 5.1.11)
二、加鎖問題對索引字段相等條件的更新,是使用行級鎖,但如果該字段沒有索引,就會使用表級鎖;
對於諸如 insert....select from *** where ***的sql,MySQL用share read鎖實現一致性讀,會阻塞滿足條件記錄的DML操作。應用中如果不注意這些,會造成嚴重的鎖等待和性能問題。
對 於兩個事務T1和T2,對於對f字段做過索引的表t,如果T1先對某個記錄 r 加S鎖(select lock in shared mode),T2再加X鎖(select for update),然後T1再試圖修改 r 時,會立即返回系統發生死鎖的錯誤,並自動回滾T1。
執行insert操作時如果發生“主鍵重復異常”,相應記錄將被當前事務加上S鎖。在該事務試圖update該記錄之前,如果有另一個事務又一次對該記錄執行了update操作(加X鎖),第一個事務會立即提示死鎖,並自動回滾。所以對通過insert判斷記錄是否存在,若存在則執行update的操作存在一定風險.
三、MySQL tools問題將通過mysqldump導出的.sql數據,通過mysql導入時需要指定--default-character-set=latin1,否則MySQL導入的速度將慢得難以忍受。
使用MySQLdump時,--flush-logs和--master-data參數同時使用時工具執行會阻塞。