日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

从开发者角度谈Mysql主键

發布時間:2023/12/3 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从开发者角度谈Mysql主键 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?從開發者角度談Mysql主鍵

說在前面

零度mysql一直比較薄弱,俗話說的好,不會mysql的程序員不是好程序員,剛剛好認識mysql大牛劉龘劉,剛剛好就有了這些文章,主要是劉龘劉大牛寫的,零度稍微修改成文,零度覺得這系列文章非常不錯,可以從開發者角度看看mysql。

主題

  • 使用自增主鍵的好處

  • 使用非自增主鍵壞處

  • 總結

使用自增主鍵的好處

那么每次插入新的記錄,記錄就會順序添加到當前索引節點的后續位置,當一頁寫滿,就會自動開辟一個新的頁

使用非自增主鍵壞處

由于每次插入主鍵的值近似于隨機,因此每次新紀錄都要被插到現有索引頁得中間某個位置,此時MySQL不得不為了將新記錄插到合適位置而移動數據,甚至目標頁面可能已經被回寫到磁盤上而從緩存中清掉,此時又要從磁盤上讀回來,這增加了很多開銷,同時頻繁的移動、分頁操作造成了大量的碎片,得到了不夠緊湊的索引結構,后續不得不通過OPTIMIZE TABLE來重建表并優化填充頁面。

總結

如果InnoDB表的數據寫入順序能和B+樹索引的葉子節點順序一致的話,這時候存取效率是最高的。也就是下面這幾種情況的存取效率最高:

  • 使用自增列(INT/BIGINT類型)做主鍵,這時候寫入順序是自增的,和B+數葉子節點分裂順序一致;

  • 該表不指定自增列做主鍵,同時也沒有可以被選為主鍵的唯一索引(上面的條件),這時候InnoDB會選擇內置的ROWID作為主鍵,寫入順序和ROWID增長順序一致;

  • 如果一個InnoDB表又沒有顯示主鍵,又有可以被選擇為主鍵的唯一索引,但該唯一索引可能不是遞增關系時(例如字符串、UUID、多字段聯合唯一索引的情況),該表的存取效率就會比較差。



總結

以上是生活随笔為你收集整理的从开发者角度谈Mysql主键的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。