91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL的鎖機制以及表的生命周期

發布時間:2021-08-20 11:20:49 來源:億速云 閱讀:345 作者:chen 欄目:數據庫

這篇文章主要講解了“MySQL的鎖機制以及表的生命周期”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL的鎖機制以及表的生命周期”吧!

  1.MySQL中并發和隔離控制機制

  Meta-data元數據鎖:在table cache緩存里實現的,為DDL(Data Definition Language)提供隔離操作。一種特別的meta-data元數據類型,叫Name Lock。(SQL層)

  表級table-level數據鎖(SQL層)

  存儲引擎特有機制 -- row locks行鎖,page locks頁鎖,table locks表級,versioning版本(在引擎中實現)

  全局讀鎖 -- FLUSH TABLES WITH READ LOCK(SQL層)

  2.在語句執行中表的生命周期

  DML(Data Manipulation Language)例子:

  計算語句使用到的所有表

  在每個表:打開open表 -- 從table cache緩存里得到TABLE對象,并在此表加上meta-data元數據鎖

  等待全局讀鎖后改變數據

  在每個表:鎖lock表 -- 在表加上table-level數據鎖

  執行語句:調用:handler::write_row()/read_rnd()/read_index(),等;隱式地調用引擎級engine-level鎖機制

  在每個表:釋放表的數據鎖

  在每個表:釋放表的DDL鎖并把表放回table cache緩存里

  DDL語句也是一樣,沒有典型的執行計劃。

  3.獲取meta-data元數據鎖

  meta-data元數據鎖的實現作為TABLE對象的一個屬性,TABLE對象代表了table cache緩存。

  meta-data元數據鎖為如下任何一種:shared共享鎖 -- 隱式地加鎖,只通過標記TABLE對象“被使用”;semi-exclusive半獨享鎖,也叫Name Lock,RENAME操作會在源表和目標加上此鎖;exclusive獨享,也叫exclusive name lock,CREATE TABLE ... SELECT操作會在目標表上加上此鎖,如果沒有的話。

  4.表高速緩存(table cache)

  是一個HASH變量,叫open_cache

  TABLE對象是HASH元素

  以HASH的操作被LOCK_open mutex互斥量保護

  內部結構(The table cache: internal structure)

  在緩存里,每個物理表可能被多個TABLE實例表示

  相同表的所有TABLE實例,通過相連的列(a linked list)連接著

  每個TABLE實例有一個table cache緩存版本的復制 -- TABLE實例保存的版本不會和當前table cache緩存版本一致,而是保存舊的和從緩存刪除的

  被某些語句使用的TABLE實例被會標記為對其它的語句來說是無效的 -- 這就是meta-data元數據鎖的本質

  在緩存中的TABLE實例通常地有一個有效的句柄實例連接著它

  內部運算(The table cache: operations)

  主要的代碼在:sql/sql_base.cc,sql/lock.cc,sql/table.h,sql/sql_table.cc

  主要的方法:open_table(),close_thread_tables(),close_cached_table(),lock_table_names()

  事實上,一個概念/對象組合不僅用于緩存或鎖定:LOCK_open mutex互斥量也用到其它的操作,如:使磁盤上和處理中的表創建的原子性

  典型的操作,來自隔離等級Pov的重要(注:isolation PoV沒研究出是什么意思):語句查詢時,打開和關閉表 -- shared共享鎖;強制和等待直到表的所有實例被關閉 -- exclusive獨享(但不完全);Name Lock -- 特殊地情況,當手上沒有TABLE實例,只能使用一個特殊的占位符(甚至表可能不存在)。

感謝各位的閱讀,以上就是“MySQL的鎖機制以及表的生命周期”的內容了,經過本文的學習后,相信大家對MySQL的鎖機制以及表的生命周期這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富锦市| 阿鲁科尔沁旗| 富源县| 广南县| 高雄县| 句容市| 怀化市| 兖州市| 西平县| 齐河县| 黑河市| 青海省| 周口市| 本溪市| 平塘县| 凤台县| 潼关县| 兴和县| 开封县| 诏安县| 安阳市| 青田县| 安丘市| 天台县| 嘉定区| 保德县| 孟村| 民勤县| 万州区| 神农架林区| 那坡县| 大冶市| 邮箱| 炉霍县| 德化县| 布尔津县| 镇雄县| 武宁县| 广安市| 石景山区| 林州市|