MySQL 邏輯系統架構: 能夠分爲鏈接器,鏈接池,Sql接口,解釋器,優化庫,緩衝區,緩存,引擎
MySQL邏輯結構刻意當作二層架構,
第一層一般叫作SQL Layer 在數據庫系統處理底層數據 包括權限判斷,SQL解析執行計劃優化,query chche的出理等等
第二層就是存儲引擎 ,一般叫作 storageEngine Layer 也就是底層數據存取操做的實現部分
有多種存儲引擎共同組成
MySQL存儲引擎介紹:
MySQL在5.1以前的版本中,存儲引擎是須要在MySQL安裝的時候就必須和MySQL一塊兒被編譯並同時被開始安裝的,
在5.1.開始 MySQL AB對其結構體系作了較大的改變,並引入了一個新的概念,「插件式存儲引擎體系結構」,讓存儲引擎層和SQL layer 各自更爲獨立,耦合更小,甚至能夠作大在線加載新的存儲引擎,而不影響MySQL的正常運行
MySQL的插件式存儲引擎只要包括 MyISAM,Innodb,NDB,Cluster,Maria,Falcon,Memory,Archive等,其中MyISAM,Innodb最爲應用普遍。
MyISAM存儲引擎介紹
1.MySQL5.1.以前默認存儲引擎
2 MyIsam存儲引擎的表在數據庫中,每一表都被存放在 三個以表名命名的物理文件
存放表結構定義信息的.frm文件
存放表的數據.MYD
存放表的索引.MYI(無論這個表有多少索引,都是存放在同一個.myi文件中)
3 MyISAM支持如下三種類型的索引:
B-Tree索引 就是全部的索引節點都按照balance tree得數據結構來存儲,全部的索引數據節點都在葉節點上
R-Tree索引 索引的存儲方式和B-Tree有些區別,主要設計用於爲存儲空間和多維數據的字段作索引
Full_text 全文索引 他的存儲結構也是B-Tree ,主要是爲了解決在咱們須要用LIKE查詢的低效問題
4 不支持事務
5 只有表鎖
6 以下狀況會形成表損壞:
mysqld正在寫入該表,被KILL掉
主機宕機
磁盤硬件故障
MyIsam存儲引擎的bug
Innodb 存儲引擎介紹:
1 對事務的支持
2 鎖定機制改變: 實現了行鎖
3 實現外鍵
4 Innodb 存儲引擎 也有.frm文件,可是表數據和索引數據是存放在一塊兒的,每一個表單獨放仍是全部表存放由用戶決定。
MySQL自帶工具使用介紹
MySQL命令 語法格式: MySQL [options] [database]
1 mysql -e (--execute=name)這個參數能夠不經過MySQL登陸MySQLserver而執行命令 在寫一些基本腳本很是有用
列子: MySQL -u root -p123456 -e "show status like '%binlog_cache%'"
2 MySQL -E (--vertical) MySQL -E -u root -p 登陸後 全部查詢結果都將以縱列顯示
3 MySQL -H 或 MySQL -X 啓用後select出來的的結果都會按照HTML於xml的格式輸出
4 --prompt=name 主要功能是定本身的MySQL提示符的顯示內容 能夠經過配置顯示登入的主機地址,用戶名,當前時間,當前數據庫
PS: 強烈推薦提示符定義 "\u@\h:\d、、r:\m:\s>"
5 --tee=name 用來告訴MySQL 將全部的輸入和輸出都記錄在文件內容 能夠寫在my.cnf中
[client]
tee = /tmp/client_mysql.logmysql