2020-02-28存儲引擎

功能了解

數(shù)據(jù)讀寫

數(shù)據(jù)安全和一致性

提高性能

熱備份

自動故障恢復

高可用方面支持

等.

存儲引擎種類

InnoDB

MyISAM

MEMORY

ARCHIVE

FEDERATED

EXAMPLE

BLACKHOLE

MERGE

NDBCLUSTER

CSV

mysql>show engines;

innodb核心特性:

1、事務(Transaction)

2沸手、MVCC(Multi-Version Concurrency Control多版本并發(fā)控制)

3八拱、行級鎖(Row-level Lock)

4缭保、ACSR(Auto Crash Safey Recovery)自動的故障安全恢復

5涯鲁、支持熱備份(Hot Backup)6坤学、Replication:Group Commit,GTID(GlobalTransactionID),多線程(Multi-Threads-SQL)

存儲引擎查看

使用 SELECT 確認會話存儲引擎

SELECT @@default_storage_engine;

寫入配置文件vim/etc/my.cnf? ? [mysqld]default_storage_engine=myisam

SHOW 確認每個表的存儲引擎:

SHOW CREATE TABLE City\G;

SHOW TABLE STATUS LIKE 'CountryLanguage'\G

?INFORMATION_SCHEMA 確認每個表的存儲引擎


selecttable_schema,table_name,enginefrominformation_schema.tableswheretable_schema notin('sys','mysql','information_schema','performance_schema');

?修改一個表的存儲引擎

db01 [oldboy]>alter table t1 engine innodb;注意:此命令我們經(jīng)常使用他皱坛,進行innodb表的碎片整理


平常處理過的MySQL問題--碎片處理(面試問題)

db01 [oldboy]>alter table t1 engine innodb;注意:此命令我們經(jīng)常使用他尊勿,進行innodb表的碎片整理

5.6 平常處理過的MySQL問題--碎片處理

環(huán)境:centos7.4,MySQL 5.7.20,InnoDB存儲引擎業(yè)務特點:數(shù)據(jù)量級較大,經(jīng)常需要按月刪除歷史數(shù)據(jù).

問題:磁盤空間占用很大,不釋放處理方法:以前:將數(shù)據(jù)邏輯導出,手工drop表

,然后導入進去現(xiàn)在:對表進行按月進行分表(partition,中間件)業(yè)務替換為truncate方式

定期進行碎片整理

最直觀的存儲方式(/data/mysql/data)


ibdata1:系統(tǒng)數(shù)據(jù)字典信息(統(tǒng)計信息)僧凤,UNDO表空間等數(shù)據(jù)

ib_logfile0 ~ ib_logfile1: REDO日志文件,事務日志文件元扔。

ibtmp1: 臨時表空間磁盤位置躯保,存儲臨時表

frm:存儲表的列信息

ibd:表的數(shù)據(jù)行和索引

表空間(Tablespace)


6.1.1、共享表空間

需要將所有數(shù)據(jù)存儲到同一個表空間中 澎语,

管理比較混亂5.5版本出現(xiàn)的管理模式途事,

也是默認的管理模式。5.6版本以擅羞,共享表空間保留尸变,只用來存儲:數(shù)據(jù)字典信息,undo,臨時表。

5.7 版本,臨時表被獨立出來了

8.0版本,undo也被獨立出去了

共享表空間設置(在搭建MySQL時减俏,初始化數(shù)據(jù)之前設置到參數(shù)文件中)

mysql>select @@innodb_data_file_path;

+-------------------------+

| @@innodb_data_file_path |

+-------------------------+

| ibdata1:12M:autoextend? |

+-------------------------+

1 row in set (0.00 sec)

mysql>show variables like '%extend%';

+-----------------------------+-------+

| Variable_name? ? ? ? ? ? ? | Value |

+-----------------------------+-------+

| innodb_autoextend_increment | 64? ? |

+-----------------------------+-------+

1 row in set (0.01 sec)

搭建數(shù)據(jù)庫環(huán)境的時候? 可以提前設置好共享表空間

獨立表空間:

從5.6召烂,默認表空間不再使用共享表空間,替換為獨立表空間娃承。

主要存儲的是用戶數(shù)據(jù)存儲特點為:一個表一個ibd文件奏夫,

存儲數(shù)據(jù)行和索引信息基本表結構元數(shù)據(jù)存儲:xxx.frm最終結論: 元數(shù)據(jù) 數(shù)據(jù)行+索引mysql表數(shù)據(jù)=(ibdataX+frm)+ibd(段、區(qū)历筝、頁)

DDL DML+DQLMySQL的存儲引擎日志:Redo Log:ib_logfile0 ib_logfile1

酗昼,重做日志Undo Log:ibdata1ibdata2(存儲在共享表空間中),

回滾日志臨時表:ibtmp1梳猪,在做joinunion操作產(chǎn)生臨時數(shù)據(jù)麻削,用完就自動

mysql>select @@innodb_file_per_table;

+-------------------------+

| @@innodb_file_per_table |

+-------------------------+

|? ? ? ? ? ? ? ? ? ? ? 1 |

+-------------------------+

alter table city dicard tablespace;? ?alter table cityimporttablespace;?比較重要

關閉表空間語句 (慎用)

set global innodb_file_per_table=0;


事務的ACID特性

Atomic(原子性)

所有語句作為一個單元全部成功執(zhí)行或全部取消。不能出現(xiàn)中間狀態(tài)。

Consistent(一致性)

如果數(shù)據(jù)庫在事務開始時處于一致狀態(tài)碟婆,則在執(zhí)行該事務期間將保留一致狀態(tài)。

Isolated(隔離性)

事務之間不相互影響惕稻。

Durable(持久性)

事務成功完成后竖共,所做的所有更改都會準確地記錄在數(shù)據(jù)庫中。所做的更改不會丟失俺祠。

事務的生命周期(事務控制語句)


?事務的開始

begin

標準的事物語句

DML:insert delete update

DDL?就是一個事物

自動提交策略(autocommit)

db01[(none)]>select @@autocommit;

db01[(none)]>setautocommit=0;

db01[(none)]>setglobalautocommit=0;

注:自動提交是否打開公给,一般在有事務需求的MySQL中,將其關閉不管有沒有事務需求蜘渣,

我們一般也都建議設置為0淌铐,可以很大程度上提高數(shù)據(jù)庫性能

(1)setautocommit=0;setglobalautocommit=0;

+(2)vim/etc/my.cnfautocommit=0

?隱式提交語句


用于隱式提交的SQL語句:begin

a b

begin?

SETAUTOCOMMIT=1

導致提交的非事務語句:DDL語句: (ALTER、CREATE和DROP)

DCL語句: (GRANT蔫缸、REVOKE和SETPASSWORD)

鎖定語句:(LOCKTABLES和UNLOCKTABLES)

導致隱式提交的語句示例:TRUNCATETABLE

LOAD DATA INFILE

SELECT FOR UPDATE

InnoDB 事務的ACID如何保證?





redo的buffer:數(shù)據(jù)頁的變化信息+數(shù)據(jù)頁當時的LSN號LSN:日志序列號 磁盤數(shù)據(jù)頁腿准、內存數(shù)據(jù)頁、redobuffer拾碌、redolog

臟頁? 內存里的數(shù)據(jù)?沒有寫到磁盤里的數(shù)據(jù)

checkpoint?將臟頁的數(shù)據(jù)刷到磁盤

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末吐葱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子校翔,更是在濱河造成了極大的恐慌弟跑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件防症,死亡現(xiàn)場離奇詭異孟辑,居然都是意外死亡,警方通過查閱死者的電腦和手機蔫敲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門饲嗽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人燕偶,你說我怎么就攤上這事喝噪。” “怎么了指么?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵酝惧,是天一觀的道長。 經(jīng)常有香客問我伯诬,道長晚唇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任盗似,我火速辦了婚禮哩陕,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己悍及,他們只是感情好闽瓢,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著心赶,像睡著了一般扣讼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缨叫,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天椭符,我揣著相機與錄音,去河邊找鬼耻姥。 笑死销钝,一個胖子當著我的面吹牛,可吹牛的內容都是我干的琐簇。 我是一名探鬼主播蒸健,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸽嫂!你這毒婦竟也來了纵装?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤据某,失蹤者是張志新(化名)和其女友劉穎橡娄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癣籽,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡挽唉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了筷狼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶籽。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖埂材,靈堂內的尸體忽然破棺而出塑顺,到底是詐尸還是另有隱情,我是刑警寧澤俏险,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布严拒,位于F島的核電站,受9級特大地震影響竖独,放射性物質發(fā)生泄漏裤唠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一莹痢、第九天 我趴在偏房一處隱蔽的房頂上張望种蘸。 院中可真熱鬧墓赴,春花似錦、人聲如沸航瞭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刊侯。三九已至痘括,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滔吠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工挠日, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疮绷,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓嚣潜,卻偏偏與公主長得像冬骚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子懂算,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355