大家知道MySQL的buffer一頁(yè)的大小是16K,但是底層文件系統(tǒng)一頁(yè)的大小是4K,換句話說,MySQL將一頁(yè)buffer數(shù)據(jù)刷入磁盤,需要寫4個(gè)文件系統(tǒng)里的頁(yè)。 假如My...
大家知道MySQL的buffer一頁(yè)的大小是16K,但是底層文件系統(tǒng)一頁(yè)的大小是4K,換句話說,MySQL將一頁(yè)buffer數(shù)據(jù)刷入磁盤,需要寫4個(gè)文件系統(tǒng)里的頁(yè)。 假如My...
我們通過讀和寫兩個(gè)場(chǎng)景分開討論 讀場(chǎng)景: 通過B+樹從根節(jié)點(diǎn)開始層序遍歷到葉子結(jié)點(diǎn),數(shù)據(jù)頁(yè)內(nèi)部通過二分搜索 普通索引:查到滿足的第一條記錄,繼續(xù)查找下一條記錄,直到找到不滿足...
其實(shí)在sql執(zhí)行過程中,使用is null 或者is not null 理論上都會(huì)走索引,由于優(yōu)化器的原因?qū)е滤饕ё兂扇頀呙?或者說是否使用索引和NULL值本身沒有直接...
慣例:自我介紹和近期深刻的項(xiàng)目介紹。 1. HashMap 的底層數(shù)據(jù)結(jié)構(gòu)是怎樣的 ? 底層是用數(shù)組實(shí)現(xiàn),hash沖突使用拉鏈法解決,節(jié)點(diǎn)超過8轉(zhuǎn)換成紅黑樹 2.HashMa...
前言 在實(shí)際開發(fā)工作中,數(shù)據(jù)庫(kù)一般不會(huì)單例部署提供服務(wù),這是為了防止服務(wù)器和數(shù)據(jù)單點(diǎn)故障問題。更多是主從架構(gòu),不僅保證數(shù)據(jù)的完整性,也流量高的時(shí)候分擔(dān)部分壓力主從復(fù)制原理 主...
什么是 MVCC ? MVCC 的就是多版本并發(fā)控制手段,在innodb中是為了解決讀寫并發(fā)問題的,它的實(shí)現(xiàn)是通過,4個(gè)隱式字段,undo日志 ,Read View 來(lái)實(shí)現(xiàn)的...
首先認(rèn)識(shí)下索引數(shù)據(jù)結(jié)構(gòu) mysql的數(shù)據(jù)是放在頁(yè)里面的,一次數(shù)據(jù)I/O至少加載一頁(yè)數(shù)據(jù).這樣是為了減少I/O資源浪費(fèi) MySQL 中 B+ 樹的一個(gè)節(jié)點(diǎn)大小為1頁(yè),也就是16...
自增鎖 普通的插入是不相互阻塞的,但是面試官能這么問,肯定有阻塞的情況,既然表里只有自增主鍵,那么只有一種鎖,那就是自增鎖,自增鎖有3中模式,每一種的阻塞情況都不一樣 傳統(tǒng)模...
解析器都做哪些事情 其主要功能是將輸入的SQL語(yǔ)句分解為語(yǔ)法單元,然后將這些語(yǔ)法單元轉(zhuǎn)換為內(nèi)部表示的數(shù)據(jù)結(jié)構(gòu),最終生成一個(gè)可執(zhí)行的查詢計(jì)劃。解析器是MySQL中的一個(gè)重要組成...
MySQL數(shù)據(jù)是存儲(chǔ)在磁盤中,但是如果每次都從磁盤讀取數(shù)據(jù),性能極差。要想提高查詢性能,就需要在內(nèi)存中增加一塊緩存區(qū)間,將磁盤中讀取到的數(shù)據(jù)緩存在內(nèi)存,直接讀取,為此Inno...
是否有Hash索引應(yīng)該這樣理解: (1)會(huì)先從普通索引查詢出主鍵; (2)再由主鍵,從聚集索引上二次遍歷定位到記錄 如果存儲(chǔ)的數(shù)據(jù)重復(fù)度很低,對(duì)該列數(shù)據(jù)以等值查詢?yōu)橹?,沒有范...
先說說redo log吧? 事務(wù)提交后,必須將事務(wù)對(duì)數(shù)據(jù)頁(yè)的修改刷(fsync)到磁盤上,才能保證事務(wù)的ACID特性。 這個(gè)刷盤,是一個(gè)隨機(jī)寫,隨機(jī)寫性能較低,如果每次事務(wù)提...