存儲引擎
MySQL可以將數據以不同的技術存儲在文件(內存)中,這種技術就稱爲存儲引擎。
每一種存儲引擎使用不同的存儲機制、索引技巧、鎖定水平、最終提供廣泛而不同的功能。
MyISAM
InnoDB
Memory
CSV
Archive
併發控制
-當多個連接對記錄進行修改時保證數據的一致性和完整性。
鎖
共享鎖(讀鎖):在同一個時間段內,多個用戶可以讀取同一個資源,讀取過程中數據不會發生任何變化。
排它鎖(寫鎖):在任何時候只能有一個用戶寫入資源,當進行寫資源時會阻塞其他的讀鎖或者寫鎖操作。
鎖顆粒
表鎖,是一種開銷最小的鎖策略。
行鎖,是一種開銷最大的鎖策略。(可能每一行都需要鎖)
事務
事務用於保證數據庫的完整性。
事務的特性:
原子性(Atomicity):事務中的全部操作在數據庫中是不可分割的,要麼全部完成,要麼均不執行。
一致性(Consistency):事務的一致性指的是在一個事務執行之前和執行之後數據庫都必須處於一致性狀態。這種特性稱爲事務的一致性。假如數據庫的狀態滿足所有的完整性約束,就說該數據庫是一致的。表B的字段是從表A獲取,表A的字段改變了,表B的相應字段也需要改變,這就叫一致性。
例如完整性約束a+b=10,一個事務改變了a,那麼b也應隨之改變。
隔離性(Isolation):分離性指併發的事務是相互隔離的。即一個事務內部的操作及正在操作的數據必須封鎖起來,不被其它企圖進行修改的事務看到。假如併發交叉執行的事務沒有任何控制,操縱相同的共享對象的多個併發事務的執行可能引起異常情況。
持久性(Durability):持久性意味着當系統或介質發生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS保證它對數據庫中數據的改變應該是永久性的,即對已提交事務的更新能恢復。持久性通過數據庫備份和恢復來保證。
外鍵
是保證數據一致性的策略。
索引(普通索引、唯一索引、全文索引、btree索引、hash索引……)
對數據表中的一列或多列的值進行排序的一種結構。
各種存儲引擎的特點
修改MySQL的存儲引擎
1. 通過修改MySQL的配置文件實現
Default-storage-engine = engine
2. 通過創建數據表命令實現
Create TABLE table_name(
…
)ENGINE = engine;
3. 通過修改數據表命令實現
ALTER TABLE table_name ENGING [=] engine_name;