題首:這是最近讀《高性能MySqL 第二版》記錄下來的東西~
#讀鎖(共享鎖)、寫鎖(排他鎖):讀鎖是共享的,互不阻塞,讀取同一資源互不影響;寫鎖排他,一個寫鎖會阻塞其他的讀寫操作。
#鎖定對象的粒度:表鎖和行鎖。
表鎖:整個表加鎖,當寫操作時,加寫鎖,資源訪問排他。當沒有寫時,加讀鎖,讀鎖互不沖突。寫鎖比讀鎖有高優先級。開銷較小。
行級鎖:對一行加鎖,開銷大,支持最大並發處理。
#事務:ACID
A原子性:一個事務是一個原子不可分的工作單元,內部的工作不會被部分執行,要麼全部執行,要麼根本不執行
C一致性:數據庫從一種一致狀態轉到另一種一致狀態,事務執行過程中的數據改變不會影響數據庫數據。
I 隔離性:某個事務的結果只有在事務完成後才對其他事務可見。
D持久性:一個事務提交後的結果改變將是持久的,不會馬上消失。
#MVCC:多版本並發控制
#幾個存儲引擎:
MyISAM:加表鎖,在select查詢時可以在同一張表完成插入(並發插入),可以基於BLOB和TEXT的前500字符進行相關索引。
InnoDB:事務引擎,適合處理大量短期事務,基於聚簇索引,不壓縮索引
Memory:基於堆的,內存存儲,支持哈希索引
Archive:只支持insert和select,不支持索引,緩沖了數據寫操作,插入時使用zlib算法壓縮,比MyISAM磁盤IO消耗少,所有 的select查詢執行全表掃描,適合logging,支持行級鎖。
存儲引擎 MySqL版本 事務 鎖粒度 主要應用 忌用 MyISAM 全部 不支持 支持並發插入的表鎖 select,insert,高負載 讀寫並重的場合 MyISAM Merge 全部 不支持 支持並發插入的表鎖 分段歸檔,數據倉庫 許多全局查找 Memory(Heap) 全部 不支持 表鎖 中間計算,靜態數據查找 大型數據集,持久性存儲 InnoDB 全部 支持 支持MVCC的行級鎖 事務處理 無 Falcon 6.0 支持 支持MVCC的行級鎖 事務處理 無 Archive 4.1 支持 支持MVCC的行級鎖 日志記錄,聚合分析 需要隨機讀取、更新、刪除 CSV 4.1 不支持 表鎖 日志記錄,大規模加載外部數據 需要隨機讀取、索引 Blackhole 4.1 支持 支持MVCC的行級鎖 日志記錄或同步歸檔 除非有特別目的,否則不適合任何場合 Federated 5.0 N/A N/A 分布式數據源 除非有特別目的,否則不適合任何場合 NDB Cluster 5.0 支持 行級鎖 高可靠性 大部分典型應用 PBXT 5.0 支持 支持MVCC的行級鎖 事務處理,日志記錄 需要聚集索引 SolidDB 5.0 支持 支持MVCC的行級鎖 事務處理 無 Maria 6.x 支持 支持MVCC的行級鎖 替代MyISAM 無