mysql的物理文件組成包括錯誤日誌,查詢日誌,慢查詢日誌,事務日誌,二進制日誌。mysql
日誌文件中記錄mysql數據庫運行期間發生的變化,記錄mysql數據庫的客戶端鏈接情況,sql語句的執行狀況和錯誤信息。
sql
mysql的邏輯結構能夠當作是二層架構,第一層叫作SQL layes,數據庫系統處理底層數據庫以前的全部工做都在這一層完成,包括權限判斷,sql解析,執行計劃優化,query cache的處理等。第二層就是存儲引擎層,叫作storage engine layes,也是底層數據存取操做實現部分,由多種存儲引擎共同組成。數據庫
實際上每一層都包含各自的不少模塊。
數據結構
mysql存儲引擎
架構
mysql5.1以前的版本是須要安裝的時候一塊兒被編譯安裝的,
ide
從mysql5.1開始,mysql AB在架構改造的時候,讓存儲引擎和sqllayes各自更爲獨立,能夠作到在線加載新的存儲引擎,而不影響mysql的正常運行。插件式存儲引擎的架構爲存儲引擎的加載和移出更爲靈活方便。
工具
主要的mysql存儲引擎插件包括myLSAM,Innodb,DDB cluster,Maria,Falcon,Memory,Archive等,最著名並且使用最爲普遍的myLSAM和Innodb兩種存儲引擎。
優化
MylSAM存儲引擎是mysql5.1以前的默認存儲引擎
ui
myLSAM存儲引擎的表在數據庫中,每個表都被存放爲三個以表名命名的物理文件,任何的存儲引擎都會存放在以.frm文件的表結構中,.MYD和.MYL文件分別存放了表的數據和索引數據,每一個表都有且僅有這樣三個文件作爲myLSAM存儲類型的表的存儲。無論表有多少個索引,都是存放在同一個.MYL文件中。
插件
MyLSAM至此三種類型的索引
B-Tree索引,就是全部索引借點都安裝balance tree的數據結構來存儲,全部的索引數據節點都在葉節點。
R-Tree索引,存儲方式和B-Tree索引有一些區別,主要設計用於存儲空間好多維數據的字段作索引。
Full-text索引就是全文索引,存儲結構也是B-Tree。只要爲了解決在咱們須要用like查詢的低效問題。
最常常使用的就是B-Tree索引,偶爾會使用到Fulltext,R-Tree索引通常系統中不多用到。B-Tree索引的全部字段的長度之和不能超過1000字節。
不支持事務
只有表鎖
雖然每個MyLSAM的表都是存放一個相同後綴名的.MYD文件中,可是每一個文件的存放格式實際上可能並非徹底同樣。由於MyLSAM的數據存放格式是分爲靜態固定長度,動態可變長度以及壓縮這三種格式。三種格式中是否壓縮由本身選擇,能夠在建立表的時候經過ROW_FORMAT來指定compressed和defalut,也能夠經過myisampack工具來進行壓縮,默認不壓縮。而在非壓縮的狀況下,是靜態仍是動態,就和表中字段的定義相關。只有表中有可變長度類型的字段存在,那麼該表就是DYNAMIC格式,若是沒有任何可變長度的字段,則爲FIXED格式。能夠經過alter table命令,強行將一個帶有varchar類型的字段的dynamix的錶轉換爲FIXED,但那好似原VARCHAR字段會被自動轉換成CHAR類型。相反若是將FIXED轉換爲DYNAMIC,也會將CHAR類型字段轉換爲VARCHAR類型。
根據表的記錄估量佔用的磁盤空間
一個表中一行大概有多少字節
更具數據庫的表每條增長几行記錄,就能算出每條要增長多少硬盤空間,就可根據數據量估算規劃多大的空間。
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個字節+20個字節+2字節+20字節+8字節+100個字節=1.6MB