Mysql學(xué)習(xí)筆記

本文章記錄在讀《高性能mysql》時的筆記,持續(xù)更新萍膛。章節(jié)內(nèi)容會按照書中章節(jié)進行梳理验懊。

一擅羞、Mysql 架構(gòu)與歷史

1.1Mysql邏輯架構(gòu)

Mysql服務(wù)器邏輯架構(gòu)圖
  1. 最上層負(fù)責(zé)鏈接處理、認(rèn)證授權(quán)义图、安全等
  2. 中間一層涵蓋了mysql的大多數(shù)核心功能减俏。包括查詢解析、分析碱工、優(yōu)化娃承、緩存奏夫、內(nèi)置函數(shù);所有的夸存儲引擎的功能都在這一層實現(xiàn)(存儲過程草慧、觸發(fā)器桶蛔、視圖等)
  3. 第三層包含了存儲引擎匙头,存儲引擎與上層使用API進行通訊漫谷,引擎之間不會有交互。

1.1.1連接管理與安全性

每個客戶端對應(yīng)著服務(wù)器的一個線程蹂析,客戶端的請求會單獨的在這個線程中執(zhí)行舔示。安全認(rèn)證基于用戶名密碼或SSL。

1.1.2優(yōu)化與執(zhí)行

mysql會即系查詢电抚,并創(chuàng)建內(nèi)部解析樹用于進行各種優(yōu)化操作惕稻。可使用explainhint進行查看解析蝙叛、優(yōu)化過程俺祠。如果執(zhí)行時,發(fā)現(xiàn)查詢引擎中有對應(yīng)的查詢借帘,則直接返回結(jié)果蜘渣,不會再進行查詢解析、優(yōu)化肺然、執(zhí)行等步驟蔫缸。

1.2 并發(fā)控制

并發(fā)控制在任何一個領(lǐng)域都是一個重要的話題,數(shù)據(jù)庫尤其明顯际起。

1.2.1 讀寫鎖

當(dāng)一個數(shù)據(jù)多線程在讀拾碌,則不會發(fā)生問題。但是當(dāng)出現(xiàn)了有的線程在寫街望,有的線程在讀的情況校翔,則會發(fā)生問題(不一致、臟數(shù)據(jù))灾前。使用共享鎖(share lock)防症、排它鎖(exclusive lock)、讀寫鎖可以解決問題豫柬。讀鎖之間是不互斥的告希,寫鎖和其他的寫鎖和讀鎖互斥。

1.2.2 鎖粒度

大多數(shù)數(shù)據(jù)庫直接使用行級鎖(row-level lock)更細(xì)粒度的鎖能保證更高的性能烧给,但是會帶來更復(fù)雜的開銷燕偶。mysql提供靈活定制的鎖策略。

表鎖

開銷最小的鎖策略础嫡,但是某種程度上性能會最差(因為執(zhí)行某些操作會鎖死整張表)指么,當(dāng)執(zhí)行比如ALERT TABLE時酝惧,會使用表鎖。并且表的寫鎖比讀鎖有更高的優(yōu)先級伯诬。服務(wù)器可能會使用表鎖晚唇。

行級鎖

行級鎖并發(fā)性能最好,但是鎖開銷也最大盗似。行級鎖僅僅在存儲引擎層實現(xiàn)哩陕,服務(wù)器層不關(guān)心行級鎖內(nèi)容。

1.3事務(wù)

事務(wù)內(nèi)的語句赫舒,要么全成功悍及,要么全失敗。
ACID接癌,原子性心赶、一致性、隔離性缺猛、持久性是一個事務(wù)處理系統(tǒng)必備的條件缨叫。

1.3.1 隔離級別

較低的隔離級別代表著更高的并發(fā)性,系統(tǒng)開銷也更低荔燎。

  • READ UNCOMMITED(讀未提交)
    即使沒有提交耻姥,對其他事務(wù)也是可見的。也成為臟讀(DIRTY READ)

  • READ COMMIT(讀提交)
    一個事務(wù)從開始到提交前湖雹,任何操作對其他事務(wù)都是不可見的咏闪。
    也叫作不可重復(fù)讀(NONREPEATABLE READ)

  • REPEATABLE READ(可重復(fù)讀)
    同一個事務(wù)中多次讀取同樣的記錄的結(jié)果是一致的
    mysql默認(rèn)采用該事物隔離級別

  • SERIALIZABLE(可串行化)
    所有事務(wù)串行執(zhí)行。采用

ANSI SQL事務(wù)隔離級別

1.3.2死鎖

兩個及以上事務(wù)在同一資源上相互占用摔吏。

Tx1:

START TRANSACTIOIN;
UPDATE T SET NAME = "A" WHERE ID = 1;
UPDATE T SET NAME = "B" WHERE ID = 2;
COMMIT;

Tx2:

START TRANSACTION;
UPDATE T SET NAME = "C" WHERE ID = 2;
UPDATE T SET NAME = "D" WHERE ID = 1;
COMMIT;

如果兩個事務(wù)都執(zhí)行了第一個語句鸽嫂,同時也鎖定了該數(shù)據(jù),接著嘗試去執(zhí)行第二個語句征讲,就會發(fā)生死鎖据某。除非有外部因素介入,不然死鎖會一直持續(xù)诗箍。

InnoDB解決死鎖的辦法是:將持有最少排它鎖的事務(wù)進行回滾癣籽。

1.3.3事務(wù)日志

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滤祖,隨后出現(xiàn)的幾起案子筷狼,更是在濱河造成了極大的恐慌,老刑警劉巖匠童,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埂材,死亡現(xiàn)場離奇詭異,居然都是意外死亡汤求,警方通過查閱死者的電腦和手機俏险,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門严拒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竖独,你說我怎么就攤上這事裤唠。” “怎么了莹痢?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵种蘸,是天一觀的道長。 經(jīng)常有香客問我格二,道長劈彪,這世上最難降的妖魔是什么竣蹦? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任顶猜,我火速辦了婚禮,結(jié)果婚禮上痘括,老公的妹妹穿的比我還像新娘长窄。我一直安慰自己,他們只是感情好纲菌,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布挠日。 她就那樣靜靜地躺著,像睡著了一般翰舌。 火紅的嫁衣襯著肌膚如雪嚣潜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天椅贱,我揣著相機與錄音懂算,去河邊找鬼。 笑死庇麦,一個胖子當(dāng)著我的面吹牛计技,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播山橄,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼垮媒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了航棱?” 一聲冷哼從身側(cè)響起睡雇,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饮醇,沒想到半個月后它抱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡驳阎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年抗愁,在試婚紗的時候發(fā)現(xiàn)自己被綠了馁蒂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜘腌,死狀恐怖沫屡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撮珠,我是刑警寧澤沮脖,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站芯急,受9級特大地震影響勺届,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娶耍,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一免姿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榕酒,春花似錦胚膊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辑舷,卻和暖如春喻犁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背何缓。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工肢础, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歌殃。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓乔妈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氓皱。 傳聞我的和親對象是個殘疾皇子路召,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容