MySQL資料庫操作(七)__2018.11.13
MySQL資料庫的儲存引擎:MySQl5.5之後使用的預設儲存引擎是InnoDB,5.5之前預設使用的MyIsAm。
MySQL的體系架構圖。
DBA。
MySQL是由SQL介面、解析權,優化器,快取和儲存引擎來組成。
1.connectors指的是不同語言中和資料庫SQL進行互動的API介面
2.Management Services &unilites:系統管理和工具
3.Connection Pool(連線池):管理使用者連線、執行緒處理。
4.SQL interface:接受使用者的SQL指令,並且返回需要查詢的結果。
5.Parser(解析器):先驗證是否正確,再按照塊進行解析。
6.Optimizer(查詢優化器):選取-投影-聯接。(結果集)
7.Caches&Buffers(查詢快取):
8.Engine(儲存引擎):特點和適應場景。
9.FileSystem(檔案系統):
engine:儲存引擎名稱
support:是否支援此儲存引擎
comment:儲存引擎的註釋
transactions:是否支援事務
XA:是否支援分散式交易處理的XA規範
save points:是否支援儲存點,以便事務回滾到儲存點。
檢視預設的儲存引擎:show variables likes 'storage_engine';
儲存引擎的特點和適用場景
memory儲存引擎
記憶體表。
#測試memory儲存引擎(記憶體表)
CREATE TABLE m1(
a VARCHAR(100)
)ENGINE=MEMORY;
此時它會在磁碟中獨立的建立一個以表名為檔名的檔案。
frm只儲存結構定義,不儲存資料檔案。資料儲存在記憶體中,讀寫效率高,磁碟中只產生一個以表明為.frm的檔案,只儲存表結構。
如果關閉MySQL服務,此時資料會丟失。
使用的預設最大記憶體空間是16M
檢視當前表結構的狀態:
不同儲存引擎產生的檔案不同。
記憶體表的使用場景,是即使發生丟失,也不會影響業務的情況下。
CSV儲存引擎:基於csv格式儲存資料的方式。
#測試CSV儲存引擎
CREATE TABLE c1(
a VARCHAR(20)NOT NULL,
b VARCHAR(20)NOT NULL
)ENGINE=csv;
CSV所有的列不支援空值,所有的欄位都必須設定為NOT NULL
INSERT c1(a,b)VALUES('AAA','BBB');
INSERT c1(a,b)VALUES('CCC','DDD');
csv:儲存資料
csm:儲存狀態
直接在excell中修改表內容。會損壞資料庫。
check table table_name;檢查表結構是否損壞
repair table table_name;修復表結構
archive儲存引擎:做歸檔用,適合歸檔,會對資料進行一個壓縮,壓縮演算法是一個無失真壓縮。
查看錶狀態:
#測試archive儲存引擎
CREATE TABLE a2 ENGINE=ARCHIVE AS SELECT *FROM a1;
會產生兩個檔案,一個是對檔案的打包,另一個是對檔案狀態的記錄。
適用場景:對不常使用又不能刪除的檔案進行儲存時就可以使用archive儲存引擎來做一個歸檔了。
這個儲存引擎的壓縮演算法可以把資料壓縮的很小。
frm都是結構檔案。.arz是資料檔案。
插入效率很高(做了優化),佔用空間很小。
缺陷:不支援修改(update)、刪除(delect)、替換(replace),只支援select和insert。
39