mysql存儲(chǔ)引擎介紹 表空間

第1章 存儲(chǔ)引擎介紹

存儲(chǔ)引擎可理解成 linux中的文件目錄系統(tǒng) 用于組織存儲(chǔ)數(shù)據(jù)

1.1 存儲(chǔ)引擎的種類

可通過

show engines; # 查看系統(tǒng)所有支持的存儲(chǔ)引擎

image.png

mysql 常用的為Innodb ,MyISAM ,CSV ,Memory

percona 自帶引擎為 xtraDB

mariadb 常用引擎 Innodb ,Tokudb, Myrocks

其中 TokuDB和Myrocks引擎插入性能高 壓縮比高 非常適合zabbix等監(jiān)控服務(wù)

1.2 InnoDB存儲(chǔ)引擎核心特性

image.png

1.2.1 對(duì)比MyISAM 新特點(diǎn)

  1. MVCC 多版本并發(fā)控制

  2. 集群(聚簇)索引 獨(dú)有的 主鍵索引

  3. 事務(wù) (重點(diǎn)) 保持?jǐn)?shù)據(jù)的一致性 完整性

  4. 鎖定粒度 支持對(duì)行鎖定 不鎖整張表 對(duì)什么行操作 鎖哪一行

  5. 外鍵 盡量不要用 容易死鎖表

  6. 更改緩沖 insert buffer 插入緩沖 獨(dú)立空間 當(dāng)插入數(shù)據(jù)時(shí) 將索引信息放到內(nèi)存中 當(dāng)不繁忙時(shí) 放入到硬盤中

  7. 自適應(yīng)列索引 為熱點(diǎn)索引生成一個(gè)索引 自動(dòng)創(chuàng)建

  8. 備份恢復(fù) 支持熱備份

  9. 自動(dòng)故障恢復(fù)(ACSR) 當(dāng)非正常關(guān)閉/重啟數(shù)據(jù)庫時(shí)自動(dòng)讀取redo undo文件恢復(fù)斷點(diǎn)操作

  10. 主從支持 新特性 GTID等

第2章 存儲(chǔ)引擎查看和配置

查看表引擎

show create table 表;

查看系統(tǒng)默認(rèn)引擎

select @@default_storage_engine;

show variables like ‘%engine%’;# 詳細(xì)一點(diǎn)

2.1.1 修改引擎+碎片整理

alter table 表 engine=innodb;

這條命令有兩個(gè)作用

  1. 修改存儲(chǔ)引擎

  2. 整理delete刪除后的碎片 可重復(fù)執(zhí)行

第3章 innodb存儲(chǔ)引擎物理存儲(chǔ)結(jié)構(gòu)

在MySQL數(shù)據(jù)目錄下有幾個(gè)重點(diǎn)文件

image.png

其中幾個(gè)重點(diǎn)文件

  1. ib_buffer_pool
    關(guān)閉數(shù)據(jù)庫時(shí),自動(dòng)保存bufferpool緩沖熱數(shù)據(jù)文件到磁盤中. 啟動(dòng)mysql時(shí) 以數(shù)據(jù)流的方式加載到內(nèi)存中

  2. ib_data1 系統(tǒng)表空間數(shù)據(jù)文件 存儲(chǔ)數(shù)據(jù)字典 undo日志信息等

  3. ib_logfile 0-N 重做日志文件 (redo.log) 與事務(wù)相關(guān)

  4. ibtmp1 臨時(shí)表空間文件 在內(nèi)存中生成空間 對(duì)數(shù)據(jù)行進(jìn)行操作(DML)時(shí) 將數(shù)據(jù)拉入到內(nèi)空間 修改完成后寫入到磁盤

3.1 表空間 ib_data1

參考資料: https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html

表空間分為兩部分:

3.1.1 共享空間

在5.5加入的功能 用來作為innodb的默認(rèn)存儲(chǔ)方式 將所有數(shù)據(jù)統(tǒng)一存儲(chǔ)到ib_data1中

缺點(diǎn)很明顯 **所有的數(shù)據(jù)和索引存放到一個(gè)文件中刮萌,將有一個(gè)很常大的文件钮孵,雖然可以把一個(gè)大文件分成多個(gè)小文件,但是多個(gè)表及索引在表空間中混合存儲(chǔ)吕粹,這樣對(duì)于一個(gè)表做了大量刪除操作后表空間中將會(huì)有大量的空隙族扰,特別是對(duì)于統(tǒng)計(jì)分析厌丑,日志系統(tǒng)這類應(yīng)用最不適合用共享表空間 **

3.1.1.1 共享表空間設(shè)置

查看配置

show variables like ‘%innodb_data_file_path%’;
select @@innodb_data_file_path;

小結(jié): 一般是在數(shù)據(jù)空初始化前進(jìn)行配置 在配置文件中編寫 獨(dú)立表空間為何還要變回共享

3.1.2 獨(dú)立表空間

優(yōu)點(diǎn):

  1. 每個(gè)表都有自已獨(dú)立的表空間。

  2. 每個(gè)表的數(shù)據(jù)和索引都會(huì)存在自已的表空間中别伏。

  3. 可以實(shí)現(xiàn)單表在不同的數(shù)據(jù)庫中移動(dòng)蹄衷。

  4. 空間可以回收。

發(fā)展史:

在5.6以后的版本作為innodb的默認(rèn)存儲(chǔ)模式

5.6 版本 把表空間中的數(shù)據(jù)行(表數(shù)據(jù))和元數(shù)據(jù)從ib_data1中獨(dú)立出來了

元數(shù)據(jù) 數(shù)據(jù)行+索引

mysql表數(shù)據(jù) (ibdataX+frm)+ibd(段厘肮、區(qū)愧口、頁)

DDL DML+DQL

3.1.3 獨(dú)立表空間管理

查看

select @@innodb_file_per_table;

image.png

1為開啟 0為關(guān)閉

3.2 共享表空間以及獨(dú)占表空間之間的轉(zhuǎn)化

修改獨(dú)占空表空間配置,以下幾個(gè)參數(shù)必須在一起加入
etc/my.cnf下進(jìn)行配置

innodb_data_home_dir = "/usr/local/mysql/var/" 數(shù)據(jù)庫文件所存放的目錄

innodb_log_group_home_dir = "/usr/local/mysql/var" 日志存放目錄

innodb_data_file_path=ibdata1:10M:autoextend設(shè)置配置一個(gè)可擴(kuò)展大小的尺寸為10MB的單獨(dú)文件(共享數(shù)據(jù)文件)类茂,名為ibdata1耍属。沒有給出文件的位置,所以默認(rèn)的是在MySQL的數(shù)據(jù)目錄內(nèi)(如 /db/mysql/ibdata1)巩检。

innodb_file_per_table=1 是否使用共享以及獨(dú)占表空間(1 為使用獨(dú)占表空間厚骗,0 為使用共享表空間)

innodb_file_per_table 通過這個(gè)參數(shù)來實(shí)現(xiàn)的轉(zhuǎn)化,如果為OFF說明所使用的是共享表空間【默認(rèn)情況下兢哭,所使用的表空間為共享表空間】

innodb_file_per_table 值來進(jìn)行修改即可领舰,但是對(duì)于之前使用過的共享表空間則不會(huì)影響,除非手動(dòng)的去進(jìn)行修改

注意:

InnoDB不創(chuàng)建目錄迟螺,所以在啟動(dòng)服務(wù)器之前請(qǐng)確認(rèn)”所配置的路徑目錄”的確存在冲秽。

做數(shù)據(jù)的移植以及備份時(shí),要注意數(shù)據(jù)文件的完整性.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末矩父,一起剝皮案震驚了整個(gè)濱河市锉桑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窍株,老刑警劉巖民轴,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攻柠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡后裸,警方通過查閱死者的電腦和手機(jī)瑰钮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轻抱,“玉大人飞涂,你說我怎么就攤上這事∑硭眩” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵士八,是天一觀的道長容燕。 經(jīng)常有香客問我,道長婚度,這世上最難降的妖魔是什么蘸秘? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蝗茁,結(jié)果婚禮上醋虏,老公的妹妹穿的比我還像新娘。我一直安慰自己哮翘,他們只是感情好颈嚼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饭寺,像睡著了一般阻课。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艰匙,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天限煞,我揣著相機(jī)與錄音,去河邊找鬼员凝。 笑死署驻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的健霹。 我是一名探鬼主播旺上,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼骤公!你這毒婦竟也來了抚官?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤阶捆,失蹤者是張志新(化名)和其女友劉穎凌节,沒想到半個(gè)月后钦听,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倍奢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年朴上,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卒煞。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痪宰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畔裕,到底是詐尸還是另有隱情衣撬,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布扮饶,位于F島的核電站具练,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏甜无。R本人自食惡果不足惜扛点,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岂丘。 院中可真熱鬧陵究,春花似錦、人聲如沸奥帘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翩概。三九已至牲距,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钥庇,已是汗流浹背牍鞠。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留评姨,地道東北人难述。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像吐句,于是被迫代替她去往敵國和親胁后。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345