不知道大家之前對類似MySQL存儲引擎相關知識介紹的文章有無了解,今天我在這里給大家再簡單的講講。感興趣的話就一起來看看正文部分吧,相信看完mysql存儲引擎相關知識介紹你一定會有所收獲的。
創(chuàng)新互聯(lián)主營于田網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,手機APP定制開發(fā),于田h5小程序設計搭建,于田網(wǎng)站營銷推廣歡迎于田等地區(qū)企業(yè)咨詢
mysql的物理文件組成包括錯誤日志,查詢?nèi)罩?,慢查詢?nèi)罩?,事務日志,二進制日志。
日志文件中記錄mysql數(shù)據(jù)庫運行期間發(fā)生的變化,記錄mysql數(shù)據(jù)庫的客戶端連接狀況,sql語句的執(zhí)行情況和錯誤信息。
mysql的邏輯結構可以看成是二層架構,第一層叫做SQL layes,數(shù)據(jù)庫系統(tǒng)處理底層數(shù)據(jù)庫之前的所有工作都在這一層完成,包括權限判斷,sql解析,執(zhí)行計劃優(yōu)化,query cache的處理等。第二層就是存儲引擎層,叫做storage engine layes,也是底層數(shù)據(jù)存取操作實現(xiàn)部分,由多種存儲引擎共同組成。
實際上每一層都包含各自的很多模塊。
mysql存儲引擎
mysql5.1之前的版本是需要安裝的時候一起被編譯安裝的,
從mysql5.1開始,mysql AB在架構改造的時候,讓存儲引擎和sqllayes各自更為獨立,可以做到在線加載新的存儲引擎,而不影響mysql的正常運行。插件式存儲引擎的架構為存儲引擎的加載和移出更為靈活方便。
主要的mysql存儲引擎插件包括myLSAM,Innodb,DDB cluster,Maria,F(xiàn)alcon,Memory,Archive等,最著名而且使用最為廣泛的myLSAM和Innodb兩種存儲引擎。
MylSAM存儲引擎是mysql5.1之前的默認存儲引擎
myLSAM存儲引擎的表在數(shù)據(jù)庫中,每一個表都被存放為三個以表名命名的物理文件,任何的存儲引擎都會存放在以.frm文件的表結構中,.MYD和.MYL文件分別存放了表的數(shù)據(jù)和索引數(shù)據(jù),每個表都有且僅有這樣三個文件做為myLSAM存儲類型的表的存儲。不管表有多少個索引,都是存放在同一個.MYL文件中。
MyLSAM至此三種類型的索引
B-Tree索引,就是所有索引借點都安裝balance tree的數(shù)據(jù)結構來存儲,所有的索引數(shù)據(jù)節(jié)點都在葉節(jié)點。
R-Tree索引,存儲方式和B-Tree索引有一些區(qū)別,主要設計用于存儲空間好多維數(shù)據(jù)的字段做索引。
Full-text索引就是全文索引,存儲結構也是B-Tree。只要為了解決在我們需要用like查詢的低效問題。
最經(jīng)常使用的就是B-Tree索引,偶爾會使用到Fulltext,R-Tree索引一般系統(tǒng)中很少用到。B-Tree索引的所有字段的長度之和不能超過1000字節(jié)。
不支持事務
只有表鎖
雖然每一個MyLSAM的表都是存放一個相同后綴名的.MYD文件中,但是每個文件的存放格式實際上可能并不是完全一樣。因為MyLSAM的數(shù)據(jù)存放格式是分為靜態(tài)固定長度,動態(tài)可變長度以及壓縮這三種格式。三種格式中是否壓縮由自己選擇,可以在創(chuàng)建表的時候通過ROW_FORMAT來指定compressed和defalut,也可以通過myisampack工具來進行壓縮,默認不壓縮。而在非壓縮的情況下,是靜態(tài)還是動態(tài),就和表中字段的定義相關。只有表中有可變長度類型的字段存在,那么該表就是DYNAMIC格式,如果沒有任何可變長度的字段,則為FIXED格式??梢酝ㄟ^alter table命令,強行將一個帶有varchar類型的字段的dynamix的表轉換為FIXED,但那好似原VARCHAR字段會被自動轉換成CHAR類型。相反如果將FIXED轉換為DYNAMIC,也會將CHAR類型字段轉換為VARCHAR類型。
根據(jù)表的記錄估量占用的磁盤空間
一個表中一行大概有多少字節(jié)
更具數(shù)據(jù)庫的表每條增加幾行記錄,就能算出每條要增加多少硬盤空間,就可根據(jù)數(shù)據(jù)量估算規(guī)劃多大的空間。
create database tanhong
create table tanhong.tan(stuid varchar(10) not null primary key, stunmae varchar(20) not null, stusex char(2) not null,stucardid varchar(20) not null,stucardid varchar(20) not null, birthday datetime defaukt null,address varchar(100) default null);
desc tanhong.tan;
10個字節(jié)+20個字節(jié)+2字節(jié)+20字節(jié)+8字節(jié)+100個字節(jié)=1.6MB
看完mysql存儲引擎相關知識介紹這篇文章,大家覺得怎么樣?如果想要了解更多相關,可以繼續(xù)關注我們的行業(yè)資訊板塊。