MySQL 知識(shí)點(diǎn)整理 (一) 體系結(jié)構(gòu)

感覺好久沒有看MySQL相關(guān)的書了,最近邊復(fù)習(xí)陷遮,邊整理下感覺重要的知識(shí)點(diǎn)滓走,一點(diǎn)點(diǎn)的由簡(jiǎn)入繁,先從整體概念上理解下帽馋,擴(kuò)充下整個(gè)知識(shí)圖譜搅方。

一比吭、MySQL 體系結(jié)構(gòu)

image.png

基礎(chǔ)中有兩個(gè)重要概念,數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)實(shí)例姨涡。

數(shù)據(jù)庫(kù):文件的集合衩藤,依照某種數(shù)據(jù)模型組織并存放于二級(jí)存儲(chǔ)器中的數(shù)據(jù)集合。

數(shù)據(jù)庫(kù)實(shí)例:是程序涛漂,位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)庫(kù)管理軟件赏表,用戶對(duì)于數(shù)據(jù)庫(kù)的任何操作(DML,DDL)都是在數(shù)據(jù)庫(kù)實(shí)例下進(jìn)行的匈仗,應(yīng)用程序只有通過數(shù)據(jù)庫(kù)實(shí)例才能和數(shù)據(jù)庫(kù)打交道瓢剿。

看了,最開始的架構(gòu)圖悠轩,可以了解到MySQL 由以下組成

1间狂、連接池組件

2、管理和工具組件

3火架、接口組件

4鉴象、解析器組件

5、優(yōu)化器組件

6何鸡、緩存組件

7纺弊、插件式的存儲(chǔ)引擎

8、物理文件

注意:存儲(chǔ)引擎是基于表音比,而不是數(shù)據(jù)庫(kù)

二俭尖、存儲(chǔ)引擎

下面介紹幾個(gè)重要的存儲(chǔ)引擎的特點(diǎn)

1、InnoDB

特點(diǎn):

  • 支持事物洞翩,主要面向在線數(shù)據(jù)處理OLTP

  • 支持行鎖設(shè)計(jì)

    • 分為共享鎖和排它鎖
    • 行鎖有基本的三種算法
      • record: 使用 ‘=’ 符號(hào)時(shí)稽犁,只查詢一行記錄的時(shí)候。
      • Gap: 記錄不存在的時(shí)候退化為這個(gè)骚亿,相同間隙鎖不沖突已亥, 查詢id>20 其實(shí)也有可能鎖住11 ,因?yàn)檎麄€(gè)間隙都加鎖
      • Next key: Gap + record
  • 支持外健.

  • 使用next-key locking的策略來避免幻讀

  • 通過多版本并發(fā)控制(MVCC)獲得高并發(fā)性来屠,并實(shí)現(xiàn)了4種隔離級(jí)別虑椎,默認(rèn)REPEATABLE.

  • 插入緩沖(insert buffer)

    • 插入緩沖,并不是緩存的一部分,而是物理頁(yè),對(duì)于非聚集索引的插入或更新操作,不是每一次直接插入索引頁(yè).而是先判斷插入的非聚集索引頁(yè)是否在緩沖池中.如果在,則直接插入,如果不再,則先放入一個(gè)插入緩沖區(qū)中.然后再以一定的頻率執(zhí)行插入緩沖和非聚集索引頁(yè)子節(jié)點(diǎn)的合并操作
  • 二次寫(double write)

    • InnoDB 的Page Size一般是16KB,其數(shù)據(jù)校驗(yàn)也是針對(duì)這16KB來計(jì)算的俱笛,將數(shù)據(jù)寫入到磁盤是以Page為單位進(jìn)行操作的捆姜。而計(jì)算機(jī)硬件和操作系統(tǒng),在極端情況下(比如斷電)往往并不能保證這一操作的原子性迎膜,16K的數(shù)據(jù)泥技,寫入4K 時(shí),發(fā)生了系統(tǒng)斷電/os crash 磕仅,只有一部分寫是成功的珊豹,這種情況下就是 partial page write 問題.
    • 所以簡(jiǎn)單的說就是簸呈,在將數(shù)據(jù)寫盤的時(shí)候斷電了,一部分?jǐn)?shù)據(jù)丟失后店茶,根本不能從redo log來進(jìn)行恢復(fù)了蜕便。其原理是在寫數(shù)據(jù)頁(yè)之前,先把這個(gè)數(shù)據(jù)頁(yè)寫到一塊獨(dú)立的物理文件位置(ibdata)贩幻,然后再寫到數(shù)據(jù)頁(yè)轿腺。在宕機(jī)重啟后,先通過該副本還原數(shù)據(jù)頁(yè)丛楚,在使用redo log.
  • 自適應(yīng)哈希索引

    • nnoDB采用自適用哈希索引技術(shù)吃溅,它會(huì)實(shí)時(shí)監(jiān)控表上索引的使用情況,如果認(rèn)為建立哈希索引可以提高查詢效率鸯檬,則自動(dòng)在內(nèi)存中的“自適應(yīng)哈希索引緩沖區(qū)建立哈希索引
  • 預(yù)讀

    • 分為線性預(yù)讀和隨機(jī)預(yù)讀

存儲(chǔ)其采用了聚集的方式,因此數(shù)據(jù)都是順序存儲(chǔ)螺垢,如沒有顯示的指定主鍵喧务,會(huì)為每一行數(shù)據(jù)生成一個(gè)6字節(jié)的ROWID作為主鍵

2、MyISAM

不支持事物枉圃,表鎖設(shè)計(jì)功茴,支持全文檢索,主要面向OLAP

緩沖池之緩存索引文件不緩沖數(shù)據(jù)

表由MYD 和MYI 組成孽亲,MYD存儲(chǔ)數(shù)據(jù)坎穿,MYI 存儲(chǔ)索引文件

3、NDB

集群存儲(chǔ)引擎類似Oracle的RAC集群

數(shù)據(jù)全部存放在內(nèi)存中

(JOIN)連接操作是在mysql數(shù)據(jù)庫(kù)層完成的返劲,而不是存儲(chǔ)引擎層完成玲昧。(復(fù)雜的連接操作需要巨大的網(wǎng)絡(luò)開銷,因此查詢巨慢)

4篮绿、Memory

表中數(shù)據(jù)存放在內(nèi)存中孵延,重啟數(shù)據(jù)消失

適用于臨時(shí)數(shù)據(jù)的臨時(shí)表,數(shù)據(jù)倉(cāng)庫(kù)維度表亲配。

默認(rèn)是哈希索引尘应,而不是B+樹索引

只支持表鎖,并發(fā)性能差吼虎,并不支持TEXT和BLOB類型犬钢。

存儲(chǔ)變長(zhǎng)字段(varchart)時(shí),是按照定長(zhǎng)字段(char)方式進(jìn)行思灰,因此會(huì)浪費(fèi)內(nèi)存

如果MYSQL數(shù)據(jù)庫(kù)使用MEMORY存儲(chǔ)引擎作為臨時(shí)表來存放查詢的中間結(jié)果集玷犹。如果結(jié)果集大于Memory存儲(chǔ)引擎設(shè)置的容量,又或者其中包含TEXT 和BLOB 數(shù)據(jù)類型字段官辈,則MySQL數(shù)據(jù)庫(kù)會(huì)把其轉(zhuǎn)換到MYISAM存儲(chǔ)引擎表而存放到磁盤中箱舞。因M有ISAM不緩存數(shù)據(jù)文件遍坟,所以臨時(shí)表的查詢會(huì)損失性能。

先整體回顧了下大概的結(jié)構(gòu)和知識(shí)點(diǎn)晴股,下周主要針對(duì)InnoDB 做一個(gè)完整性的細(xì)節(jié)回顧


角兒旮旯
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愿伴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子电湘,更是在濱河造成了極大的恐慌隔节,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寂呛,死亡現(xiàn)場(chǎng)離奇詭異怎诫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贷痪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門幻妓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劫拢,你說我怎么就攤上這事肉津。” “怎么了舱沧?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵妹沙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我熟吏,道長(zhǎng)距糖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任牵寺,我火速辦了婚禮悍引,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缸剪。我一直安慰自己吗铐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布杏节。 她就那樣靜靜地躺著唬渗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奋渔。 梳的紋絲不亂的頭發(fā)上镊逝,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音嫉鲸,去河邊找鬼撑蒜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的座菠。 我是一名探鬼主播狸眼,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼浴滴!你這毒婦竟也來了拓萌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤升略,失蹤者是張志新(化名)和其女友劉穎微王,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體品嚣,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炕倘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翰撑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罩旋。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖眶诈,靈堂內(nèi)的尸體忽然破棺而出瘸恼,到底是詐尸還是另有隱情,我是刑警寧澤册养,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站压固,受9級(jí)特大地震影響球拦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帐我,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一坎炼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拦键,春花似錦谣光、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至媚朦,卻和暖如春氧敢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背询张。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工孙乖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓唯袄,卻偏偏與公主長(zhǎng)得像弯屈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恋拷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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