1. 程式人生 > >MySQL資料庫操作(七)__2018.11.13

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