日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

数据库 学习总结

發(fā)布時(shí)間:2023/12/20 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库 学习总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

      • mysql基礎(chǔ)
        • mysql查詢流程
        • mysql的頁(yè)
        • mySQL索引
      • 事務(wù)
        • 事務(wù)的特性
        • 事務(wù)的開(kāi)啟與關(guān)閉
        • redo
        • undo
        • 事務(wù)并發(fā)存在的一致性問(wèn)題
        • 事務(wù)隔離級(jí)別
        • MVCC 和readView
        • x鎖 和 s鎖

mysql基礎(chǔ)

mysql查詢流程

mysql的頁(yè)

mysql中各個(gè)數(shù)據(jù)頁(yè)可以組成一個(gè)雙向鏈表,每個(gè)數(shù)據(jù)頁(yè)中的記錄按照主鍵值從小到大的順序組成一個(gè)單鏈表。
每個(gè)數(shù)據(jù)頁(yè)都會(huì)存儲(chǔ)在它里面的記錄生成一個(gè)頁(yè)目錄。
頁(yè)目錄中是對(duì)數(shù)據(jù)主鍵分組形成的槽,查找是利用二分法可以查找到槽所指向的分組,然后遍歷分組,可以得到記錄數(shù)據(jù)。

mySQL索引

mySQL的索引常見(jiàn)的是B+樹(shù)索引,(innoDB還會(huì)自動(dòng)生成哈希索引)。B+樹(shù)是一種平衡樹(shù),所有數(shù)據(jù)都保存在葉子節(jié)點(diǎn),在葉子節(jié)點(diǎn)之上的節(jié)點(diǎn)只保存鍵值和頁(yè)值。還可以簡(jiǎn)歷二級(jí)索引,就是建立不是按照逐漸排序的索引,二級(jí)索引能提高檢索效率,但是會(huì)降低插入,刪除操作的效率。

事務(wù)

事務(wù)的特性

原子性:一個(gè)事務(wù)只能發(fā)生或者不發(fā)生,一個(gè)食物中的操作不可分割
一致性:數(shù)據(jù)庫(kù)中的數(shù)據(jù)與真實(shí)數(shù)據(jù)具有一致性
隔離性:多個(gè)事務(wù)之間不影響
持久性:事務(wù)一旦提交,就會(huì)永久有效

事務(wù)的開(kāi)啟與關(guān)閉

開(kāi)啟:begin 或者 start transaction args
提交:commit:(也可以隱式提交)
回滾(中止):rollback
保存點(diǎn):savepoint,當(dāng)事務(wù)比較長(zhǎng)的時(shí)候中間可以用保存點(diǎn)保存。

redo

redo的存在是為了保證事務(wù)的持久性,就是說(shuō)當(dāng)提交了事務(wù)之后,提交的事務(wù)應(yīng)該被刷新到磁盤(pán)中,但是如果每次提交修改就將整個(gè)頁(yè)刷新非常浪費(fèi)時(shí)間,所以每次只需要把修改的記錄日志redo刷新到磁盤(pán)中就可以了,這樣如果系統(tǒng)崩潰了,可以借用redo日志文件恢復(fù)系統(tǒng)。
(這里面還有很多技術(shù)細(xì)節(jié))

undo

記錄恢復(fù)修改操作的日志

事務(wù)并發(fā)存在的一致性問(wèn)題

臟寫(xiě):一個(gè)事務(wù)修改另一個(gè)未提交事務(wù)修改的數(shù)據(jù)
臟讀:一個(gè)事務(wù)讀取另一個(gè)未提交事務(wù)修改的數(shù)據(jù)’
不可重復(fù)讀:一個(gè)事務(wù)修改另一個(gè)未提交事務(wù)讀取的數(shù)據(jù)
幻讀:在未提交的檢索事務(wù)的時(shí)候?qū)懭肓藵M足檢索要求的記錄。

事務(wù)隔離級(jí)別


mysql中設(shè)置事務(wù)隔離級(jí)別的語(yǔ)句:
set [GLOBAL|SESSION] transaction isolation level

MVCC 和readView

MVCC就是多版本并發(fā)訪問(wèn)控制,具體就是維護(hù)一個(gè)版本鏈和創(chuàng)建readview,通過(guò)版本鏈和readview來(lái)實(shí)現(xiàn)在read comimitted 和 repeatable read隔離級(jí)別下執(zhí)行,保證讀寫(xiě)和寫(xiě)讀操作的并發(fā)執(zhí)行。
MVCC的版本鏈:當(dāng)對(duì)記錄更新 修改 添加等操作時(shí)生成一個(gè)版本連,每一條記錄都有一個(gè)非減trx_id標(biāo)記。trx_id代表事務(wù)發(fā)生的先后順序。

ReadView:
readView主要是記錄當(dāng)前事務(wù)中哪些事務(wù)還沒(méi)有提交,以此保證訪問(wèn)到的都是已經(jīng)提交的事務(wù)。readView中的數(shù)據(jù)如下:
m_ids :記錄中當(dāng)前系統(tǒng)中活躍的事務(wù)trx_id鏈表
min_trx_id:最小的活躍事務(wù)trx_id
max_trx_id:在生成readview是系統(tǒng)應(yīng)該分配給下一個(gè)事務(wù)的trx_id.

配合使用 將版本鏈中事務(wù)的trx_id與readview中的記錄比較,當(dāng)trx_id小于min_trx_id 或者大于min_trx_id但是小于max_trx_id而且不在m_ids中,表示這條事務(wù)可見(jiàn),如果大于等于max_trx_id或者在m_ids中,則表示這條記錄不可見(jiàn),需要看下一條。

x鎖 和 s鎖

X鎖 排他鎖,當(dāng)進(jìn)行寫(xiě)操作時(shí),對(duì)記錄加上X鎖,其他操作就無(wú)法獲得加鎖的機(jī)會(huì)
s鎖 共享鎖 ,當(dāng)進(jìn)行讀操作時(shí),對(duì)記錄加上S鎖,可以允許繼續(xù)加S鎖,不能加X(jué)鎖。
也就是X鎖和S鎖實(shí)現(xiàn)了 讀-讀 并發(fā)可以,讀寫(xiě) 寫(xiě)讀 寫(xiě)寫(xiě) 并發(fā)不可以。
S鎖和X鎖的粒度可以在表級(jí)也可以在行級(jí),在表級(jí)加鎖后還可以在行級(jí)加鎖,規(guī)則同上。

總結(jié)

以上是生活随笔為你收集整理的数据库 学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。