MySQL 普通索引與唯一索引怎麼抉擇

建議使用普通索引

原因是:

  • 使用查詢時,普通索引與唯一索引性能差異可以忽略。
  • 但是更新語言時,普通索引性能比唯一索引要好。

那麼爲什麼說"更新語言時,普通索引性能比唯一索引要好"呢?
原因是:
        對於唯一索引來說,需要將數據頁讀入內存,判斷到沒有衝突,插入這個值,語句執行結束;
        對於普通索引來說,則是將更新記錄在 change buffer,語句執行就結束了;
        將數據從磁盤讀入內存涉及隨機 IO 的訪問,是數據庫裏面成本最高的操作之一。change buffer 因爲減少了隨機磁盤訪問,所以對更新性能的提升是會很明顯的。

        普通索引更新語句時會將更新操作都會先緩存到change buffer中,且會一直累積,直到使用select語句查詢該數據。纔會調用merge,將change buffer中的數據寫入磁盤,這樣的操作減少了數據寫入磁盤的次數。
        而mysql也會定時調用merge方法(在數據庫正常關閉(shutdown)的過程中,也會執行 merge 操作)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章