mysql數(shù)據(jù)庫的存儲(chǔ)引擎詳細(xì)講解
發(fā)表時(shí)間:2023-07-13 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]本篇文章講述了mysql數(shù)據(jù)庫的存儲(chǔ)引擎,那么不太了解mysql數(shù)據(jù)庫存儲(chǔ)引擎的同學(xué)和我們引擎來看看本篇關(guān)于mysql數(shù)據(jù)庫的存儲(chǔ)引擎講述的文章吧!優(yōu)化結(jié)構(gòu)介紹:類型含義存儲(chǔ)層存儲(chǔ)引擎、字段類型選擇...
本篇文章講述了
mysql數(shù)據(jù)庫的存儲(chǔ)引擎,那么不太了解mysql數(shù)據(jù)庫存儲(chǔ)引擎的同學(xué)和我們引擎來看看本篇關(guān)于mysql數(shù)據(jù)庫的存儲(chǔ)引擎講述的文章吧!
優(yōu)化結(jié)構(gòu)介紹:
類型 | 含義 |
---|
存儲(chǔ)層 | 存儲(chǔ)引擎、字段類型選擇、范式設(shè)計(jì) |
設(shè)計(jì)層 | 索引、緩存、分區(qū)(分表) |
架構(gòu)層 | 多個(gè)mysql服務(wù)器設(shè)置,讀寫分離(主從模式) |
sql語句層 | 多個(gè)sql語句都可以達(dá)到目的的情況下,要選擇性能高、速度快的sql語句 |
存儲(chǔ)引擎
存儲(chǔ)引擎:我們使用的數(shù)據(jù)是通過一定的技術(shù)存儲(chǔ)在數(shù)據(jù)庫當(dāng)中的,數(shù)據(jù)庫的數(shù)據(jù)是以文件形式存儲(chǔ)到硬盤當(dāng)中的。技術(shù)不只一種,并且每種技術(shù)有自己獨(dú)特的性能和功能體現(xiàn)。存儲(chǔ)數(shù)據(jù)的技術(shù)和其功能的合并就稱為“存儲(chǔ)引擎”。
innodb
數(shù)據(jù)庫每個(gè)數(shù)據(jù)表的數(shù)據(jù)設(shè)計(jì)三方面信息:表結(jié)構(gòu)、數(shù)據(jù)、索引

表結(jié)構(gòu)、數(shù)據(jù)、索引的物理存儲(chǔ)

該類型 數(shù)據(jù)、索引 的物理文件位置:

給innodb類型表 的數(shù)據(jù)和索引創(chuàng)建自己對(duì)應(yīng)的存儲(chǔ)空間:




數(shù)據(jù)存儲(chǔ)順序

該特點(diǎn)決定了該類型表的寫入操作較慢。
事務(wù)、外鍵
該類型數(shù)據(jù)表支持事務(wù)、外鍵
外鍵:兩個(gè)數(shù)據(jù)表A和B,B表的主鍵是A表的普通字段,在A表看這個(gè)普通的字段就是該表的“外鍵”,外鍵的使用有”約束”。
約束:以上兩個(gè)表,必須先寫B(tài)表的數(shù)據(jù),再寫A表的數(shù)據(jù),并且 A表的外鍵取值必須來之B表的主鍵id值,不能超過其范圍。
并發(fā)性
該類型表的并發(fā)性非常高,多人同時(shí)操作該數(shù)據(jù)表,為了操作數(shù)據(jù)表的時(shí)候,數(shù)據(jù)內(nèi)容不會(huì)隨便發(fā)生變化,要對(duì)信息進(jìn)行“鎖定”
該類型鎖定級(jí)別為:行鎖。只鎖定被操作的當(dāng)前記錄。
Myisam
結(jié)構(gòu)、數(shù)據(jù)、索引獨(dú)立存儲(chǔ) ,該類型的數(shù)據(jù)表 表結(jié)構(gòu)、數(shù)據(jù)、索引 都有獨(dú)立的存儲(chǔ)文件:
表文件類型 | 含義 |
---|
*.frm | 表結(jié)構(gòu)文件 |
*.MYD | 表數(shù)據(jù)文件 |
*.MYI | 表索引文件 |
特點(diǎn):獨(dú)立的存儲(chǔ)文件可以單獨(dú)備份、還原。
數(shù)據(jù)存儲(chǔ)順序
并發(fā)性
該特點(diǎn)決定了該類型表的寫入操作較快。
壓縮機(jī)制
如果一個(gè)數(shù)據(jù)表的數(shù)據(jù)非常多,為了節(jié)省存儲(chǔ)空間,需要對(duì)該表進(jìn)行壓縮處理。
復(fù)制當(dāng)前數(shù)據(jù)表的數(shù)據(jù):

不斷復(fù)制使得order3數(shù)據(jù)表的數(shù)據(jù)變?yōu)?00多萬條:

對(duì)應(yīng)的存儲(chǔ)該200萬條信息的文件的物理大小為40多兆:

開始?jí)嚎sorder3數(shù)據(jù)表的數(shù)據(jù)
壓縮工具:myisampack.exe 表名

重建索引:myisamchk.exe -rq 表名

解壓縮工具:myisamchk.exe –unpack 表名

order3表信息被壓縮的60%的空間:

order3數(shù)據(jù)表有壓縮,但是索引沒有了:

重建索引:

索引果然被重建完畢:

刷新數(shù)據(jù)表:flush table 表名

出現(xiàn)情況:壓縮的數(shù)據(jù)表是只讀表,不能寫信息:

壓縮的數(shù)據(jù)表有特點(diǎn):不能頻繁的寫入操作,只是內(nèi)容固定的數(shù)據(jù)表可以做壓縮處理,例如(存儲(chǔ)全國地區(qū)信息的數(shù)據(jù)表等)
如果必須要寫數(shù)據(jù):就解壓該數(shù)據(jù)表,寫入數(shù)據(jù),再壓縮
解壓order3數(shù)據(jù)表,使得其可以寫入數(shù)據(jù):(解壓同時(shí)索引自動(dòng)重建)

數(shù)據(jù)解壓完畢:

執(zhí)行flush操作,更新解壓后的數(shù)據(jù):flush table 表名
;該操作同時(shí)會(huì)刪除order3.MYD.00996D46.deleted的壓縮備份文件

此時(shí)允許給order3繼續(xù)寫入數(shù)據(jù):

innodb存儲(chǔ)引擎:適合做修改、刪除
Myisam存儲(chǔ)引擎:適合做查詢、寫入
Archive
innodb存儲(chǔ)引擎:適合做修改、刪除
Myisam存儲(chǔ)引擎:適合做查詢、寫入
memory
內(nèi)存型存儲(chǔ)引擎,操作速度非常快速,比較適合存儲(chǔ)臨時(shí)信息,服務(wù)器斷電,給存儲(chǔ)引擎的數(shù)據(jù)立即丟失。
存儲(chǔ)引擎的選擇
Myisam和innodb
網(wǎng)站大多數(shù)情況下“讀和寫”操作非常多,適合選擇Myisam類型(例如: dedecms、phpcms內(nèi)容管理系統(tǒng)(新聞網(wǎng)站)、discuz論壇)
網(wǎng)站對(duì)業(yè)務(wù)邏輯有一定要求(辦公網(wǎng)站、商城)適合選擇innodb (Mysql5.5默認(rèn)存儲(chǔ)引擎都是innodb)
以上就是mysql數(shù)據(jù)庫的存儲(chǔ)引擎詳細(xì)講解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。