天天看點

程式員之路:MySQL存儲引擎

存儲引擎

MySQL可以将資料以不同的技術存儲在檔案(記憶體)中,這種技術就稱為存儲引擎

每一種存儲引擎使用不同的存儲機制,索引技巧,鎖定水準,最終提供廣泛且不同的功能

MySQL支援的存儲引擎

MyISAM、InnoDB、Memory、CSV、Archive

并發控制

當多個連接配接對記錄進行修改時保證資料的一緻性和完整性。系統使用鎖系統來解決這個并發控制,這種鎖分為:

共享鎖(讀鎖):在同一時間内,多個使用者可以讀取同一個資源,讀取過程中資料不會發生任何變化。

排他鎖(寫鎖):在任何時候隻能有一個使用者寫入資源,當進行寫鎖時會阻塞其他的讀鎖或者寫鎖操作。

鎖的力度(鎖的顆粒:鎖定時的機關):

表鎖,是一種開銷最小的鎖政策。得到資料表的寫鎖(禁止其他使用者進行讀寫,隻能有一個鎖)

行鎖,是一種開銷最大的鎖政策。并行性最大(有多少條記錄,就有可能對每條記錄都進行鎖)

表鎖的開銷最小,因為使用鎖的個數最小,行鎖的開銷最大,因為可能使用鎖的個數比較多

事務的特 性

原子性(Atomicity)

一緻性(Consistency)

隔離性(Isolation)

持久性(Durability)

外鍵

保證資料一緻性的政策

索引

是對資料表中一列或多列的值進行排序的一種結構

修改存儲引擎的方法

(1)通過修改MySQL配置檔案實作

default-storage-engine=INNODB

(2)通過建立資料表指令實作

CREATE TABLE table_name(

...

)

ENGINE = engine;

(3)通過修改資料表指令實作

ALTER TABLE table_name ENGINE [=] engine_name;

主要知識點

MyISAM:存儲限制可達256TB,支援索引,表級鎖定,資料壓縮

InnoDB:存儲限制為64TB,支援事務和索引,鎖顆粒為行鎖