優化目的mysql
- 減小數據冗餘(儘可能) - 儘可能避免數據維護中出現更新、插入和刪除等異常 - 插入:若是表中的某個實體隨着另外一個實體而存在 - 更新:若是更改表中的某個實體的單獨屬性時,須要對多表進行更新 - 刪除:若是刪除表中的某一時則會致使其餘實體的消失
需求分析sql
邏輯分析數據庫
物理設計segmentfault
維護優化安全
範式化併發
反範式化數據庫設計
本篇重點解釋物理設計、範式化與反範式化化各自優缺點;其餘將在文章《數據庫優化》系列一一講明;
範式化設計的優缺點性能
優勢優化
缺點設計
反範式化設計的優缺點
優勢
缺點
設計範式化要求的三範式:
第一範式
第二範式
第三範式
物理設計的內容
定義數據庫、表及字段的命名規範
存儲引擎 | 事務 | 鎖粒度 | 主要應用 | 忌用 |
---|---|---|---|---|
MyISAM | 不支持 | 支持併發插入的表級鎖 | SELECT、INSERT | 讀寫操做頻繁 |
MRG_MYISAM | 不支持 | 支持併發插入的表級鎖 | 分段歸檔,數據倉庫 | 全局查找過多的場景 |
Innodb | 支持 | 支持MVCC的行級鎖 | 事務處理 | 無 |
Archive | 不支持 | 行級鎖 | 日誌記錄,只支持insert,select | 須要隨機讀取,更新,刪除 |
Ndb cluster | 支持 | 行級鎖 | 高可用性 | 大部分應用 |
爲表中的字段選擇合適的數據類型(數據頁)
如何爲Innodb選擇主鍵
相關連接
《數據庫優化之實例和故事》、《 數據庫優化之什麼影響性能》
做者:不動峯
博客園: http://www.cnblogs.com/mylly/ 版權全部,歡迎保留原文連接進行轉載:)