1. 程式人生 > >MySQL邏輯架構(一)

MySQL邏輯架構(一)

語法 登入 b- tee nlog chche tmp 單獨 表鎖

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.log

MySQL邏輯架構(一)