欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

解決線上數(shù)據(jù)庫死鎖,就是這么簡單!

2021-02-26    分類: 網(wǎng)站建設(shè)

前幾天,線上發(fā)生了一次數(shù)據(jù)庫死鎖問題,這一問題前前后后排查了比較久的時間,這個過程中自己也對數(shù)據(jù)庫的鎖機制有了更深的理解。

updateFundStreamId 執(zhí)行的時候使用到的是 PRIMARY 索引。

updateStatus 執(zhí)行的時候使用到的是 idx_seller_transNo 索引。

通過執(zhí)行計劃,我們發(fā)現(xiàn) updateStatus 其實是有兩個索引可以用的,執(zhí)行的時候真正使用的是 idx_seller_transNo 索引。這是因為 MySQL 查詢優(yōu)化器是基于代價(cost-based)的查詢方式。

因此,在查詢過程中,最重要的一部分是根據(jù)查詢的 SQL 語句,依據(jù)多種索引,計算查詢需要的代價,從而選擇最優(yōu)的索引方式生成查詢計劃。

我們查詢執(zhí)行計劃是在死鎖發(fā)生之后做的,事后查詢的執(zhí)行計劃和發(fā)生死鎖那一刻的索引使用情況并不一定是相同的。

但是,我們結(jié)合死鎖日志,也可以定位到以上兩條 SQL 語句執(zhí)行的時候使用到的索引。

即 updateFundStreamId 執(zhí)行的時候使用到的是 PRIMARY 索引,updateStatus 執(zhí)行的時候使用到的是 idx_seller_transNo 索引。

有了以上這些已知信息,我們就可以開始排查死鎖原因及其背后的原理了。

通過分析死鎖日志,再結(jié)合我們的代碼以及數(shù)據(jù)庫建表語句,我們發(fā)現(xiàn)主要問題出在我們的 idx_seller_transNo 索引上面:

  1. KEY `idx_seller_transNo` (`seller_id`,`fund_transfer_order_no`(20)) 

索引創(chuàng)建語句中,我們使用了前綴索引,為了節(jié)約索引

    那么為什么 fund_transfer_order_no 的前 20 位相同會導(dǎo)致死鎖呢?

    加鎖原理

    我們就拿本次的案例來看一下 MySQL 數(shù)據(jù)庫加鎖的原理是怎樣的,本文的死鎖背后又發(fā)生了什么。

    我們在數(shù)據(jù)庫上模擬死鎖場景,執(zhí)行順序如下:

    我們知道,在 MySQL 中,行級鎖并不是直接鎖記錄,而是鎖索引。索引分為主鍵索引和非主鍵索引兩種:

    • 如果一條 SQL 語句操作了主鍵索引,MySQL 就會鎖定這條主鍵索引。
    • 如果一條語句操作了非主鍵索引,MySQL 會先鎖定該非主鍵索引,再鎖定相關(guān)的主鍵索引。

    主鍵索引的葉子節(jié)點存的是整行數(shù)據(jù)。在 InnoDB 中,主鍵索引也被稱為聚簇索引(Clustered Index)。

    非主鍵索引的葉子節(jié)點的內(nèi)容是主鍵的值,在 InnoDB 中,非主鍵索引也被稱為非聚簇索引(Secondary Index)。

    所以,本文的示例中涉及到的索引結(jié)構(gòu)(索引是 B+ 樹,簡化成表格了)如圖:

    死鎖的發(fā)生與否,并不在于事務(wù)中有多少條 SQL 語句,死鎖的關(guān)鍵在于:兩個(或以上)的 Session 加鎖的順序不一致。

    文章標題:解決線上數(shù)據(jù)庫死鎖,就是這么簡單!
    文章鏈接:http://chinadenli.net/news/103129.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、動態(tài)網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化網(wǎng)站策劃電子商務(wù)

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

    網(wǎng)站托管運營
    91福利免费一区二区三区| 成人精品亚洲欧美日韩| 精品熟女少妇av免费久久野外| 国产一区二区三中文字幕| 日本不卡片一区二区三区| 日本精品啪啪一区二区三区| 久久亚洲精品中文字幕| 亚洲婷婷开心色四房播播| 亚洲欧美中文字幕精品| 亚洲欧美日韩中文字幕二欧美 | 亚洲黑人精品一区二区欧美| 免费国产成人性生活生活片| 午夜国产福利在线播放| 欧美精品亚洲精品一区| 国产免费成人激情视频| 亚洲中文字幕在线观看四区 | 亚洲一区二区精品免费视频| 日韩精品在线观看一区| 午夜视频免费观看成人| 亚洲视频在线观看免费中文字幕| 午夜久久精品福利视频| 亚洲天堂精品在线视频| 色婷婷中文字幕在线视频| 日韩视频在线观看成人| 国产又大又黄又粗又免费| 国产福利一区二区三区四区| 在线观看中文字幕91| 欧美日韩精品一区免费| 欧美成人免费夜夜黄啪啪| 亚洲男人的天堂色偷偷| 欧美久久一区二区精品| 日韩黄片大全免费在线看| 欧美不卡高清一区二区三区| 欧美日韩免费黄片观看| 黑丝袜美女老师的小逼逼| 亚洲熟妇中文字幕五十路| 中文字字幕在线中文乱码二区| 日本和亚洲的香蕉视频| 九九热视频网在线观看| 精品人妻一区二区三区免费| 欧美日韩高清不卡在线播放|