中文字幕av高清_国产视频一二区_男女羞羞羞视频午夜视频_成人精品一区_欧美色视_在线视频这里只有精品

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 既然MySQL中InnoDB使用MVCC,為什么REPEATABLE-READ不能消除幻讀?

既然MySQL中InnoDB使用MVCC,為什么REPEATABLE-READ不能消除幻讀?

來源:千鋒教育
發布人:xqq
時間: 2023-10-12 21:11:43 1697116303

一、REPEATABLE-READ不能消除幻讀的原因

務隔離級別關注的是讀操作的數據是否會受到其他并發事務的影響。在 REPEATABLE READ 隔離級別下,InnoDB 采用的是多版本并發控制(MVCC)來實現隔離性。通過MVCC,InnoDB將每一行數據版本化,每個事務讀取的是它啟動時的行版本快照,并不受其他事務的影響。因此,REPEATABLE READ 隔離級別能夠避免臟讀、不可重復讀等問題。

然而,現象為幻讀的并發問題則是因為這些問題的影響范圍超出了行級別,MVCC 只能保證行級別的隔離性,但無法處理更高級別的隔離性問題。幻讀問題的典型例子是:一個事務在讀取某個表中的記錄時,另外一個事務在此時向表中新增了一個記錄,名列前茅個事務再次查詢時,會出現名列前茅次查詢和第二次查詢結果不一致的現象,這就是幻讀。

總之,REPEATABLE-READ 隔離級別采用了 MVCC 技術,可以有效地解決臟讀、不可重復讀等級別的隔離性問題,但不能消除幻讀問題。

二、幻讀

幻讀(Phantom Read),是指當事務不是獨立執行時發生的一種現象。事務A讀取與搜索條件相匹配的若干行。事務B以插入或刪除行等方式來修改事務A的結果集,然后再提交。幻讀是指當事務不是獨立執行時發生的一種現象,例如名列前茅個事務對一個表中的數據進行了修改,比如這種修改涉及到表中的“全部數據行”。同時,第二個事務也修改這個表中的數據,這種修改是向表中插入“一行新數據”。那么,以后就會發生操作名列前茅個事務的用戶發現表中還存在沒有修改的數據行,就好象發生了幻覺一樣一般解決幻讀的方法是增加范圍鎖RangeS,鎖定檢索范圍為只讀,這樣就避免了幻讀。

在數據庫定義的四種隔離級別中,較高隔離級別SERIALIZABLE_READ可以保證不出現幻讀的問題。針對當前讀,RR隔離級別保證對讀取到的記錄加鎖(記錄鎖),同時保證對讀取的范圍加鎖,新的滿足查詢條件的記錄不能夠插入(間隙鎖),不存在幻讀現象。

三、mysql介紹

1、簡介

MySQL是一個關系型數據庫管理系統由瑞典MySQL AB?公司開發,屬于?Oracle?旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在?WEB?應用方面,MySQL是較好的?RDBMS(Relational Database Management System,關系數據庫管理系統)應用軟件之一。MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網站的開發都選擇 MySQL 作為網站數據庫。

2、索引功能

索引是一種特殊的文件(InnoDB?數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。索引不是使用廣泛的,索引可以加快數據檢索操作,但會使數據修改操作變慢。每修改數據記錄,索引就必須刷新一次。為了在某種程度上彌補這一缺陷,許多 SQL 命令都有一個 DELAY_KEY_WRITE 項。這個選項的作用是暫時制止 MySQL 在該命令每插入一條新記錄和每修改一條現有之后立刻對索引進行刷新,對索引的刷新將等到全部記錄插入/修改完畢之后再進行。在需要把許多新記錄插入某個數據表的場合,DELAY_KEY_WRITE 選項的作用將非常明顯。另外,索引還會在硬盤上占用相當大的空間。因此應該只為最經常查詢和最經常排序的數據列建立索引。注意,如果某個數據列包含許多重復的內容,為它建立索引就沒有太大的實際效果。從理論上講,完全可以為數據表里的每個字段分別建一個索引,但 MySQL 把同一個數據表里的索引總數限制為16個。

與 InnoDB數據表相比,在 InnoDB 數據表上,索引對 InnoDB 數據表的重要性要大得多。在 InnoDB 數據表上,索引不僅會在搜索數據記錄時發揮作用,還是數據行級鎖定機制的基礎。“數據行級鎖定”的意思是指在事務操作的執行過程中鎖定正在被處理的個別記錄,不讓其他用戶進行訪問。這種鎖定將影響到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。出于效率方面的考慮,InnoDB 數據表的數據行級鎖定實際發生在它們的索引上,而不是數據表自身上。顯然,數據行級鎖定機制只有在有關的數據表有一個合適的索引可供鎖定的時候才能發揮效力。

3、MySQL 中文排序錯誤的解決方法

在 MySQL 數據庫中,進行中文排序和查找的時候,對漢字的排序和查找結果是錯誤的。這種情況在 MySQL 的很多版本中都存在。如果這個問題不解決,那么 MySQL 將無法實際處理中文。出現這個問題的原因是:MySQL 在查詢字符串時是大小寫不敏感的,在編繹 MySQL 時一般以 ISO-8859 字符集作為默認的字符集,因此在比較過程中中文編碼字符大小寫轉換造成了這種現象,一種解決方法是對于包含中文的字段加上“binary”屬性,使之作為二進制比較,例如將“name char(10)”改成“name char(10)binary”。

如果你使用源碼編譯 MySQL,可以編譯 MySQL 時使用 –with–charset=gbk 參數,這樣 MySQL 就會直接支持中文查找和排序了。

4、新特性

表和索引的分區行級復制MySQL 基群基于磁盤的數據支持MySQL 集群復制增強的全文本搜索函數增強的信息模式(數據字典)可插入的 API服務器日志表XML(標準通用標記語言的子集)/ XPath支持實例管理器表空間備份mysql_upgrade 升級程序內部任務/事件調度器新的性能工具和選項如 mysqlslap

延伸閱讀1:mysql授權協議

MySQL 遵守的不只是 GPL 協議,而是雙授權模式(dual license)即你在遵守 GPL 協議的開源項目使用 MySQL,需要遵守 GPL 協議方能使用。如果你在非開源項目使用(即軟件不打算開放源代碼),且該軟件用來銷售,則需要向 MySQL 支付相應 license 費用。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 爱爱精品 | 国产美女久久久 | www亚洲免费国内精品 | 国产福利91精品一区二区三区 | 国产在线第一页 | 亚洲国产一区二 | 成人午夜免费视频 | 国产精品久久久久久久久久久久久久 | 成人 在线| 日韩欧美一区二区视频 | 能免费看的av | 亚洲国产精品成人综合色在线婷婷 | 国产91精品一区二区绿帽 | 欧美精品色| 日韩免费在线 | 51ⅴ精品国产91久久久久久 | 中文字幕av一区二区三区 | 亚洲情视频 | 91高清视频 | 涩涩片影院 | 成人小视频在线观看 | 国产中文字幕在线观看 | 日韩成人免费av | 国外成人免费视频 | 91成人短视频在线观看 | 国产精品一区一区三区 | 黑人巨大精品欧美黑白配亚洲 | 91精品国产色综合久久不卡98口 | 日韩av在线免费播放 | 久热精品视频 | 色网站在线免费观看 | 干比网| 国产成人精品午夜在线播放 | 91久久久www播放日本观看 | 久久久久综合 | 日韩欧美三区 | 日本黄a三级三级三级 | 日韩国产精品一区二区三区 | 一级片免费在线视频 | 婷婷色在线 | 日本a视频 |