婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySql 索引、鎖、事務知識點小結

MySql 索引、鎖、事務知識點小結

熱門標簽:外呼系統電銷受騙 常州網絡外呼系統開發 巫師三血與酒地圖標注 走過哪個省地圖標注 銷售語音電話機器人 安徽ai電話電銷機器人有效果嗎 萊西市地圖標注 在哪里申請400電話 400電話申請信用卡

本文總結了MySql 索引、鎖、事務知識點。分享給大家供大家參考,具體如下:

1. 索引

索引,類似書籍的目錄,可以根據目錄的某個頁碼立即找到對應的記錄。

索引的優點:

  1. 天生排序。
  2. 快速查找。

索引的缺點:

  1. 占用空間。
  2. 降低更新表的速度。

注意點:小表使用全表掃描更快,中大表才使用索引。超級大表索引基本無效。

索引從實現上說,分成 2 種:聚集索引和輔助索引(也叫二級索引或者非聚集索引)

從功能上說,分為 6 種:普通索引,唯一索引,主鍵索引,復合索引,外鍵索引,全文索引。

詳細說說 6 種索引:

  1. 普通索引:最基本的索引,沒有任何約束。
  2. 唯一索引:與普通索引類似,但具有唯一性約束。
  3. 主鍵索引:特殊的唯一索引,不允許有空值。
  4. 復合索引:將多個列組合在一起創建索引,可以覆蓋多個列。
  5. 外鍵索引:只有InnoDB類型的表才可以使用外鍵索引,保證數據的一致性、完整性和實現級聯操作。
  6. 全文索引:MySQL 自帶的全文索引只能用于 InnoDB、MyISAM ,并且只能對英文進行全文檢索,一般使用全文索引引擎(ES,Solr)。

注意:主鍵就是唯一索引,但是唯一索引不一定是主鍵,唯一索引可以為空,但是空值只能有一個,主鍵不能為空。

另外,InnoDB 通過主鍵聚簇數據,如果沒有定義主鍵且沒有定義聚集索引, MySql 會選擇一個唯一的非空索引代替,如果沒有這樣的索引,會隱式定義個 6 字節的主鍵作為聚簇索引,用戶不能查看或訪問。

簡單點說:

  1. 設置主鍵時,會自動生成一個唯一索引,如果之前沒有聚集索引,那么主鍵就是聚集索引。
  2. 沒有設置主鍵時,會選擇一個不為空的唯一索引作為聚集索引,如果還沒有,那就生成一個隱式的 6 字節的索引。

MySql 將數據按照頁來存儲,默認一頁為 16kb,當你在查詢時,不會只加載某一條數據,而是將這個數據所在的頁都加載到 pageCache 中,這個其實和 OS 的就近訪問原理類似。

MySql 的索引使用 B+ 樹結構。在說 B+ 樹之前,先說說 B 樹,B 樹是一個多路平衡查找樹,相較于普通的二叉樹,不會發生極度不平衡的狀況,同時也是多路的。

B 樹的特點是:他會將數據也保存在非頁子節點。

看圖可知:

而這個特點會導致非頁子節點不能存儲大量的索引。

而 B+ Tree 就是針對這個對 B tree 做了優化。如下圖所示:

我們看到,B+ Tree 將所有的 data 數據都保存到了葉子節點中,非也子節點只保存索引和指針。

我們假設一個非頁子節點是 16kb,每個索引,即主鍵是 bigint,即 8b,指針為 8b。那么每頁能存儲大約 1000 個索引(16kb/ 8b + 8b).

而一顆 3 層的 B+樹能夠存儲多少索引呢?如下圖:

大約能夠存儲 10 億個索引。通常 B+ 樹的高度在 2-4 層,由于 MySql 在運行時,根節點是常駐內存的,因此每次查找只需要大約 2 -3 次 IO??梢哉f,B+ 樹的設計,就是根據機械磁盤的特性來進行設計的。

知道了索引的設計,我們能夠知道另外一些信息:

  1. MySql 的主鍵不能太大,如果使用 UUID 這種,將會浪費 B+ 樹的非葉子節點。
  2. MySql 的主鍵最好是自增的,如果使用 UUID 這種,每次插入都會調整 B+樹,從而導致頁分裂,嚴重影響性能。

那么,如果項目中使用了分庫分表,我們通常都會需要一個主鍵進行 sharding,那怎么辦呢?在實現上,我們可以保留自增主鍵,而邏輯主鍵用來作為唯一索引即可。

2. 鎖機制

關于 Mysql 的鎖,各種概念就會噴涌而出,事實上,鎖有好幾種維度,我們來解釋一下。

1. 類型維度

  • 共享鎖(讀鎖 / S 鎖)
  • 排它鎖(寫鎖 / X 鎖)

類型細分:

  • 意向共享鎖

  • 意向排他(互斥)鎖

  • 悲觀鎖(使用鎖,即 for update)
  • 樂觀鎖(使用版本號字段,類似 CAS 機制,即用戶自己控制。缺點:并發很高的時候,多了很多無用的重試)

2. 鎖的粒度(粒度維度)

  • 表鎖
  • 頁鎖(Mysql BerkeleyDB 引擎)
  • 行鎖(InnoDB)

3. 鎖的算法(算法維度)

  • Record Lock(單行記錄)
  • Gap Lock(間隙鎖,鎖定一個范圍,但不包含鎖定記錄)
  • Next-Key Lock(Record Lock + Gap Lock,鎖定一個范圍,并且鎖定記錄本身, MySql 防止幻讀,就是使用此鎖實現)

4. 默認的讀操作,上鎖嗎?

  • 默認是 MVCC 機制(“一致性非鎖定讀”)保證 RR 級別的隔離正確性,是不上鎖的。

可以選擇手動上鎖:select xxxx for update (排他鎖); select xxxx lock in share mode(共享鎖),稱之為“一致性鎖定讀”。

使用鎖之后,就能在 RR 級別下,避免幻讀。當然,默認的 MVCC 讀,也能避免幻讀。

既然 RR 能夠防止幻讀,那么,SERIALIZABLE 有啥用呢?

防止丟失更新。例如下圖:

這個時候,我們必須使用 SERIALIZABLE 級別進行串行讀取。

最后,行鎖的實現原理就是鎖住聚集索引,如果你查詢的時候,沒有正確地擊中索引,MySql 優化器將會拋棄行鎖,使用表鎖。

3. 事務

事務是數據庫永恒不變的話題, ACID:原子性,一致性,隔離性,持久性。

四個特性,最重要的就是一致性。而一致性由原子性,隔離性,持久性來保證。

  • 原子性由 Undo log 保證。Undo Log 會保存每次變更之前的記錄,從而在發生錯誤時進行回滾。
  • 隔離性由 MVCC 和 Lock 保證。這個后面說。
  • 持久性由 Redo Log 保證。每次真正修改數據之前,都會將記錄寫到 Redo Log 中,只有 Redo Log 寫入成功,才會真正的寫入到 B+ 樹中,如果提交之前斷電,就可以通過 Redo Log 恢復記錄。

然后再說隔離性。

隔離級別:

  1. 未提交讀(RU)
  2. 已提交讀(RC)
  3. 可重復讀(RR)
  4. 串行化(serializable)

每個級別都會解決不同的問題,通常是3 個問題:臟讀,不可重復讀,幻讀。一張經典的圖:

這里有個注意點,關于幻讀,在數據庫規范里,RR 級別會導致幻讀,但是,由于 Mysql 的優化,MySql 的 RR 級別不會導致幻讀:在使用默認的 select 時,MySql 使用 MVCC 機制保證不會幻讀;你也可以使用鎖,在使用鎖時,例如 for update(X 鎖),lock in share mode(S 鎖),MySql 會使用 Next-Key Lock 來保證不會發生幻讀。前者稱為快照讀,后者稱為當前讀。

原理剖析:

  • RU 發生臟讀的原因:RU 原理是對每個更新語句的行記錄進行加鎖,而不是對整個事務進行加鎖,所以會發生臟讀。而 RC 和 RR 會對整個事務加鎖。
  • RC 不能重復讀的原因:RC 每次執行 SQL 語句都會生成一個新的 Read View,每次讀到的都是不同的。而 RR 的事務從始至終都是使用同一個 Read View。
  • RR 不會發生幻讀的原因: 上面說過了。

那 RR 和 Serializble 有什么區別呢?答:丟失更新。本文關于鎖的部分已經提到。

MVCC 介紹:全稱多版本并發控制。

innoDB 每個聚集索引都有 4 個隱藏字段,分別是主鍵(RowID),最近更改的事務 ID(MVCC 核心),Undo Log 的指針(隔離核心),索引刪除標記(當刪除時,不會立即刪除,而是打標記,然后異步刪除);

本質上,MVCC 就是用 Undo Log 鏈表實現。

MVCC 的實現方式:事務以排它鎖的方式修改原始數據,把修改前的數據存放于 Undo Log,通過回滾指針與數據關聯,如果修改成功,什么都不做,如果修改失敗,則恢復 Undo Log 中的數據。

多說一句,通常我們認為 MVCC 是類似樂觀鎖的方式,即使用版本號,而實際上,innoDB 不是這么實現的。當然,這不影響我們使用 MySql。

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:
  • Mysql數據庫高級用法之視圖、事務、索引、自連接、用戶管理實例分析
  • MySql 知識點之事務、索引、鎖原理與用法解析
  • MySQL數據庫的事務和索引詳解

標簽:來賓 陽江 赤峰 鞍山 河北 黃石 果洛 煙臺

巨人網絡通訊聲明:本文標題《MySql 索引、鎖、事務知識點小結》,本文關鍵詞  MySql,索引,鎖,事務,知識點,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySql 索引、鎖、事務知識點小結》相關的同類信息!
  • 本頁收集關于MySql 索引、鎖、事務知識點小結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩一区久久| 国产精品人成在线观看免费| 捆绑调教美女网站视频一区| 美日韩一区二区| 粉嫩av一区二区三区粉嫩 | 精品日韩一区二区三区免费视频| 久久久久久久电影| 中文字幕视频一区二区三区久| 中文字幕在线观看一区二区| 一区精品在线播放| 亚洲激情自拍偷拍| 亚洲最新视频在线观看| 国产东北露脸精品视频| 91国产丝袜在线播放| 26uuuu精品一区二区| 一区二区三区四区激情| www.综合网.com| 日韩美女主播在线视频一区二区三区 | 国产精品99久久久久久宅男| 韩国av一区二区三区在线观看| 国产91精品久久久久久久网曝门| 欧美日韩一二三区| 中文字幕欧美一区| 久久国产精品免费| 国产激情精品久久久第一区二区| 精品视频一区三区九区| 亚洲视频香蕉人妖| 久久国产日韩欧美精品| 欧美偷拍一区二区| 欧美一区二区福利视频| 日本一不卡视频| 欧美日韩一卡二卡三卡 | 在线亚洲人成电影网站色www| 国产成人夜色高潮福利影视| 国产成人精品综合在线观看| 精品日韩在线一区| 日日夜夜免费精品视频| 色综合久久99| 中文字幕精品综合| 日韩精品一区第一页| 欧美岛国在线观看| 天堂va蜜桃一区二区三区漫画版 | 亚洲大片免费看| 国产福利一区二区三区视频| 欧美精品一区二区三区蜜桃视频| 美女网站色91| 久久久久久久久久久久久女国产乱| 免费黄网站欧美| 日韩精品一区二区三区swag| 亚洲国产视频一区| 国产成人精品免费视频网站| 国产精品美女久久久久久久网站| 国产成a人亚洲| 国产精品免费av| 成人性生交大片免费| 136国产福利精品导航| 99精品热视频| 亚洲伦理在线免费看| 97se亚洲国产综合自在线不卡| 国产亚洲欧美一区在线观看| 色综合视频在线观看| 中文字幕精品一区二区精品绿巨人| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩一区二区三区精品视频| 人人精品人人爱| 一本到高清视频免费精品| 日韩二区三区在线观看| 日韩精品一区二区三区老鸭窝| 国产一区二区三区综合| 日本一区二区三区国色天香 | 一区二区免费在线| 成人开心网精品视频| 自拍视频在线观看一区二区| 99久久精品99国产精品| 一区二区久久久| 欧美日本国产视频| 亚洲精品一二三四区| 日韩欧美激情四射| 麻豆精品视频在线观看免费 | 美女久久久精品| 2021久久国产精品不只是精品 | 精品国产亚洲在线| 亚洲妇女屁股眼交7| 日韩小视频在线观看专区| 久久精品理论片| 久久精品一区蜜桃臀影院| 97久久精品人人爽人人爽蜜臀| 天堂在线亚洲视频| 欧美一区二区三区免费观看视频| 亚洲国产成人av好男人在线观看| 日韩欧美一级二级三级久久久| 九九视频精品免费| 国产精品久99| 欧美少妇xxx| 久久五月婷婷丁香社区| 一区二区三区.www| 在线播放视频一区| 综合久久一区二区三区| 波多野结衣一区二区三区| 亚洲欧美偷拍三级| 久久新电视剧免费观看| 欧美va日韩va| 色综合久久88色综合天天| 成av人片一区二区| 国产老妇另类xxxxx| 图片区小说区区亚洲影院| 久久久久久久久久美女| 精品国产123| 精品国产免费人成电影在线观看四季| 91成人在线观看喷潮| 成人黄色av网站在线| 丝袜诱惑制服诱惑色一区在线观看| 亚洲私人黄色宅男| 亚洲美女视频在线| 久久毛片高清国产| 久久精品欧美一区二区三区不卡| 欧美一区二区三区精品| 在线免费av一区| 风间由美中文字幕在线看视频国产欧美| 欧美激情中文不卡| 国产欧美日韩在线| 91精品蜜臀在线一区尤物| 另类小说欧美激情| 麻豆成人免费电影| 久久草av在线| 捆绑紧缚一区二区三区视频| 日韩av中文字幕一区二区三区| 亚洲成人免费电影| 亚洲一区二区欧美日韩| 一区二区三区精品在线| 亚洲午夜一区二区三区| 婷婷六月综合亚洲| 亚洲国产精品久久久男人的天堂| 亚洲国产精品成人综合色在线婷婷 | av激情成人网| 色综合久久久久综合体| 欧美在线小视频| 欧美乱熟臀69xxxxxx| 欧美一级黄色片| 26uuu亚洲综合色| 欧美高清在线一区二区| 日本一区二区高清| 国产精品第一页第二页第三页| 国产网站一区二区三区| 久久久久久久久久久久久夜| 中文字幕一区av| 亚洲国产成人tv| 精品亚洲aⅴ乱码一区二区三区| 国产一区二区三区在线观看免费| 精品在线视频一区| 成人午夜视频福利| 成人激情免费视频| 免费成人在线观看视频| 国v精品久久久网| 色综合天天天天做夜夜夜夜做| 欧美日本一区二区三区| 精品乱人伦一区二区三区| 亚洲男人的天堂av| 麻豆精品在线播放| 成人福利在线看| 欧美三日本三级三级在线播放| 欧美精品日韩精品| 国产精品天干天干在观线| 婷婷久久综合九色综合绿巨人| 亚洲午夜电影网| 国产中文字幕一区| 色8久久人人97超碰香蕉987| 欧美日韩精品一区二区天天拍小说| 精品国内二区三区| 日韩一区中文字幕| 青娱乐精品视频| 在线观看日韩电影| www亚洲一区| 亚洲国产综合91精品麻豆| 精品亚洲国产成人av制服丝袜 | 成人永久aaa| 欧美一区二区三区日韩视频| 中文字幕va一区二区三区| 水蜜桃久久夜色精品一区的特点| 99精品国产99久久久久久白柏| 日韩精品一区在线| 精品福利一区二区三区免费视频| 亚洲日本乱码在线观看| 亚洲123区在线观看| 成人免费视频caoporn| 色婷婷久久久综合中文字幕 | 亚洲你懂的在线视频| 国产精品一区二区免费不卡 | 亚洲一区在线看| 成人动漫一区二区三区| 91精品国产综合久久久久久漫画 | 国产三级精品在线| 亚洲6080在线| 欧洲精品视频在线观看| 欧美一区二视频| 自拍偷拍亚洲综合| 99国产精品国产精品久久| 成人高清在线视频| 中文一区二区完整视频在线观看| 日韩av中文字幕一区二区三区|