HOME 首頁
SERVICE 服務產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務案例
NEWS 熱點資訊
ABOUT 關于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    mysql為什么默認可重復讀

    發(fā)布時間:2023-04-08 16:40:08     稿源: 創(chuàng)意嶺    閱讀: 125        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于mysql為什么默認可重復讀的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com。

    創(chuàng)意嶺作為行業(yè)內優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    mysql為什么默認可重復讀

    一、MySQL可重復讀防止幻讀

    接上篇 事務隔離級別和幻讀 ,留了個坑,沒想到竟然過了10天,時間不注意真的過的好快。順便提下,圖片鏈接是屬于網(wǎng)站的,開發(fā)自己的圖床迫在眉睫,萬一哪天遷移就要做很多額外工作,一些概念或者思路用圖片表達更直觀清楚。

    回到正題,之前提到一般情況下MySQL的InnoDB引擎在可重復讀的情況下是沒法保證不出現(xiàn)幻讀的,但實際情況是MySQL可以通過加鎖來防止幻讀的出現(xiàn),這種鎖定通過Next-key機制來實現(xiàn),是屬于記錄鎖和間隙鎖(Gap鎖)的結合。

    引申,行級別鎖的三種算法:

    舉個存在唯一索引和輔助索引的例子做說明:

    執(zhí)行 select * from test where b = 3 for update

    存在兩個索引,分別加鎖,唯一主鍵列a加record lock , 輔助索引列b加next-key lock (1,3) 以及給下一個值的區(qū)間(3,6)加gap鎖;

    因此在另一個事務里執(zhí)行以下語句都會阻塞,具體分析:

    第一個阻塞因為加了唯一索引的record lock a = 5;

    第二個主鍵插入4,符合條件,但是根據(jù)輔助索引b 的范圍, b = 2 在(1,3)中,同樣阻塞;

    第三個a =6 不在主鍵a鎖定范圍,b = 5 也不在輔助索引b 的范圍(1,3)中,但在另一個gap鎖范圍(3,6)中,因此也阻塞;

    這種鎖定情形下,可以執(zhí)行的包括類似語句:

    insert的特殊情況

    對于insert 會檢查下一條記錄是否被鎖定,如上述例子有 select * from test where b = 3 for update 插入 insert into test select 2,2 會檢測到b = 3 已經(jīng)被鎖定,而 insert into test select 2,0 可以執(zhí)行;

    [1]:《MySQL技術內幕:InnoDB存儲引擎》-第六章:鎖

    二、MYSQL 那點破事!索引、SQL調優(yōu)、事務、B+樹、分表 ....

    大家好,我是Tom哥~

    為了便于大家查找問題,了解全貌,整理個目錄,我們可以快速全局了解關于mysql數(shù)據(jù)庫,面試官一般喜歡問哪些問題

    接下來,我們逐條來看看每個問題及答案

    MyISAM 和 InnoDB 的區(qū)別?

    答案:InnoDB 支持 事務、外鍵、聚集索引,通過MVCC來支持高并發(fā),索引和數(shù)據(jù)存儲在一起。InnoDB 不保存表的具體行數(shù),執(zhí)行 select count(*) from table 時需要全表掃描。而MyISAM 用一個變量保存了整個表的行數(shù)。

    InnoDB 最小的鎖粒度是行鎖,MyISAM 最小的鎖粒度是表鎖,并發(fā)能力低。MySQL 將默認存儲引擎是 InnoDB

    mysql 鎖有哪些類型?

    答案:mysql鎖分為共享鎖( S lock ) 、排他鎖 ( X lock ),也叫做讀鎖和寫鎖。根據(jù)粒度,可以分為表鎖、頁鎖、行鎖。

    什么是間隙鎖?

    答案:間隙鎖是可重復讀級別下才會有的鎖,mysql會幫我們生成了若干 左開右閉 的區(qū)間,結合MVCC和間隙鎖可以解決幻讀問題。

    如何避免死鎖?

    答案:死鎖的四個必要條件:1、互斥 2、請求與保持 3、環(huán)路等待 4、不可剝奪。

    數(shù)據(jù)庫的隔離級別?

    答案:讀未提交、讀已提交、可重復讀(mysql的默認級別,每次讀取結果都一樣,但是有可能產(chǎn)生幻讀)、串行化。

    Mysql有哪些類型的索引?

    答案:

    什么是覆蓋索引和回表?

    答案:

    1、覆蓋索引,指的是在一次查詢中,一個索引包含所有需要查詢的字段的值,可能是返回值或where條件

    假如我們創(chuàng)建了一個(money,buyer_id)的聯(lián)合索引,索引的葉子節(jié)點包含了 buyer_id 的信息,則不會再 回表 查詢。

    2、回表,指查詢時一些字段值拿不到,需要到主鍵索引B+樹再查一次。

    Mysql的最左前綴原則?

    答案:即最左優(yōu)先,在檢索數(shù)據(jù)時從聯(lián)合索引的最左邊開始匹配,直到遇到范圍查詢(如:> 、< 、between、like等)

    例子:where a = 1 and b = 2 and c > 3 and d = 4 ,如果建立(a,b,c,d)組合索引,d是用不到索引的;如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調整。

    線上SQL的調優(yōu)經(jīng)驗?

    答案:

    官方為什么建議采用自增id 作為主鍵?

    答案:自增id是連續(xù)的,插入過程也是順序的,總是插入在最后,減少了頁分裂,有效減少數(shù)據(jù)的移動。所以盡量不要使用字符串(如:UUID)作為主鍵。

    索引為什么采用B+樹,而不用B-樹,紅黑樹?

    答案:提升查詢速度,首先要減少磁盤IO次數(shù),也就是要降低樹的高度。

    事務的特性有哪些?

    答案:ACID。

    如何實現(xiàn)分布式事務?

    答案:

    日常工作中,MySQL 如何做優(yōu)化?

    答案:

    mysql 主從同步具體過程?

    答案:

    什么是主從延遲?

    答案:指一個寫入SQL操作在主庫執(zhí)行完后,將數(shù)據(jù)完整同步到從庫會有一個時間差,稱之為主從延遲。計算公式:

    注意:不同服務器要保持時鐘一致

    主從延遲排查方法?

    答案:通過 show slave status 命令輸出的 Seconds_Behind_Master 參數(shù)的值來判斷

    主從延遲要怎么解決?

    答案:

    如果數(shù)據(jù)量太大怎么辦?

    答案:mysql表的數(shù)據(jù)量一般控制在千萬級別,如果再大的話,就要考慮分庫分表。除了分表外,列舉了面對海量數(shù)據(jù)業(yè)務的一些常見優(yōu)化手段

    分表后ID如何保證全局唯一呢?

    答案:分庫分表后,多張表共用一套全局id,原來單表主鍵自增方式滿足不了要求。我們需要重新設計一套id生成器。特點:全局唯一、高性能、高可用、方便接入。

    分表后可能遇到的哪些問題?

    答案:分表后,與單表的最大區(qū)別是有分表鍵 sharding_key ,用來路由具體的物理表,以電商為例,有買家和賣家兩個維度,以 buyer_id 路由,無法滿足賣家的需求,反之同樣道理。如何解決?

    三、h4數(shù)據(jù)庫默認事務隔離級別

    你好請問是問h4數(shù)據(jù)庫默認事務隔離級別有什么嗎?h4數(shù)據(jù)庫默認事務隔離級別有四種。分別是讀未提交、讀已提交、可重復讀、序列化,不同的隔離級別下會產(chǎn)生臟讀、幻讀、不可重復讀等相關問題,因此在選擇隔離級別的時候要根據(jù)應用場景來決定,使用合適的隔離級別。在實際的工作中很少做修改,一般都是使用默認的隔離級別:mysql默認為不可重復讀,oracle為讀已提交。

    四、2020-12-14:mysql中,可重復讀是怎么實現(xiàn)的?

    MVCC多版本并發(fā)控制。

    以上就是關于mysql為什么默認可重復讀相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。


    推薦閱讀:

    academy諧音記憶

    my花式英文字體(my花體字可復制)

    wechat翻譯中文(mywechat翻譯中文)

    浙江廣聚匯貿易公司這么樣(浙江廣聚紙制品制造有限公司怎么樣)

    杭州到廣州國道怎么走(杭州到廣州國道怎么走最方便)