MYSQL儲存引擎(七)
儲存引擎
1. MyISAM
2. InnoDB
3. Memory
4. CSV
5. Archive
儲存資料的技術
併發控制:當多個連線對記錄進行修改時保證資料的一致性和完整性
解決
鎖:
A、共享鎖(讀鎖):在同一時間段內,多個使用者可以讀取同一個資源,讀取過程中資料不會發生任何變化。
B、排他鎖(寫銷):在任何時候只能有一個使用者寫入資源,當進行寫鎖時會阻塞其他的讀鎖或者寫鎖操作。
鎖顆粒:
A、表鎖(開銷最小的鎖策略)加上一個表鎖後不需要加其他鎖,所以開銷最小
B、行鎖(開銷最大的鎖策略)行鎖可以加很多個,所以稱之為開銷大
事務處理:整個過程每一個單元全部完成才算事務處理成功,某一個單元失敗事務就會回滾.
主要作用:保證資料庫的完整性
事務的特性:
原子性、一致性、隔離性、永續性
簡稱:A(Atomic)C(Consistency)I(Isolation)D(Durable)
各種儲存引擎的特點
使用最多的:MyISAM,InnoDB
CSV儲存引擎:以逗號為分隔符,不支援索引;
BlackHole:黑洞引擎,寫入的資料都會消失,一般用於做資料複製的中繼;
MyISAM:適用於事務的處理不多的情況;
//兩種常用儲存引擎的比較
MyISAM : 儲存限制可達256TB,支援索引、表級鎖定、資料壓縮
InnoDB : 儲存限制為64TB,支援事務和索引,鎖顆粒為行鎖
//設定儲存引擎
(1)通過修改MySQL配置檔案實現
default-storage-engine = engine
(2)通過建立資料表命令實現
CREATE TABLE table_name(\
…
) ENGINE = engine;
例如:
CREATE TABLE tp1(
s1 VARCHAR(10)
) ENGINE = MyISAM;
SHOW CREATE TABLE tp1; // 檢視資料表的結構
(3)通過修改資料表命令實現
ALTER TABLE table_name ENGINE [=] engine_name;
例如:
ALTER TABLE tp1 ENGINE = InnoDB;
儲存引擎:資料的系統的心臟,實現資料儲存和查詢的功能,對應的特點為,儲存限制、事務安全、是否支援索引、鎖的粒度大小、是否支援資料壓縮、是否支援外來鍵等。每個技術特點解決的問題是不一樣的,不過本質就是為了實現資料儲存和查詢,是實現的技術不一樣,特點不一樣,所以我們應該根據需要選擇最為合適的。
1:儲存限制——資料庫能存多少資料
2:事務安全——能否保證資料完整性
3:是否支援索引——能夠實現快速查詢
4:鎖的粒度大小——用於併發控制,實現資料一致性和完整性
5:是否支援資料壓縮——用於資料壓縮,能夠儲存更多的資料或者改變資料儲存結構
6:是否支援外來鍵——能夠保證資料的一致性。