程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySql性能相關的一些概念(性能tip0)

MySql性能相關的一些概念(性能tip0)

編輯:MySQL綜合教程

題首:這是最近讀《高性能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 無


摘自 Change Dir

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved