高性能MySQL讀書筆記 (一)

1. MySQL服務器邏輯架構

鏈接/線程處理: 基於C/S的工具相似,實現鏈接處理,受權認證,安全等.
查詢緩存/解析器: 實現查詢解析,分析,優化,緩存.內置函數和跨存儲引擎如存儲過程,觸發器,視圖等.
存儲引擎: 數據的存儲和提取.不會解析sql,獨立與上層服務器經過api進行通訊.sql

2. 併發控制

每種存儲引擎有不一樣的鎖策略和鎖粒度
表鎖是MySQL中最基本,開銷最小的策略,阻塞其餘用戶對該表的讀寫操做.寫鎖比讀鎖有更高的優先級.
行級鎖: InnoDB和XtraDB,行級鎖只在存儲引擎實現
事務: ACID, 原子性,一致性,隔離性(isolation),持久性(durability).
MySQL默認的事務隔離級別爲可重複讀(REPEATABLE READ)
死鎖: 不一樣引擎處理方式不一樣.InnoDB 處理死鎖方法,將持有最少行級排他鎖的事務進行回滾
多版本併發控制(MVCC): 如InnoDB, 經過在每行記錄後面保存兩個列存儲建立和刪除時的系統版本號.數據庫

3. 存儲引擎

建立表時,MySQL會在數據庫子目錄下建立一個同名.frm文件保存表的定義api

InnoDB: 處理大量的短時間事務, 經過間隙鎖鎖定查詢涉及的行和索引中的間隙進行鎖定,防止幻影行的插入, 基於聚簇索引建立表.經過一些機制和工具支持真正的熱備份.通常優先考慮InnoDB存儲引擎緩存

MyISAM: 包括全文索引,壓縮,空間函數,延遲更新索引鍵等特性,不支持事務和行級鎖,崩潰後沒法安全恢復.對於只讀數據,表小能夠忍受修復操做可使用該引擎.
若是要使用全文索引,建議用InnoDB加上Sphinx組合替換MyISAM安全

使用引擎考慮:事務,備份,崩潰恢復,特有特性
日誌型應用: MyISAM 或者Archive,由於開銷低插入速度快更爲適合
對於大數據量須要創建數據倉庫,InfobrightTokuDB是比較好的解決方案服務器

相關文章
相關標籤/搜索