一、影響資料庫的因素
1.系統硬體
cpu 記憶體 io 網路
2.系統環境
作業系統 資料庫版本 作業系統引數配置 資料庫的引數配置
3.系統的規模
併發量 資料量 使用者量
4.資料庫內部因素
查詢效率(不合理的sql語句、過多的表連線)
表設計不合理
隱式轉換(字段型別轉換)
統計資訊
鎖資訊二、資料庫優化目標
1.提高系統的吞吐量
2.縮短系統的響應時間
有資料表明,使用者發出請求後可以承受的等待時間是5-10秒。當乙個應用,使用者等待10秒還沒有出來結果,使用者就會失去信心。所以,除了個別的應用以外,必須優化應用,確保及時響應。
三、優化方向
優化:硬體、系統配置、資料表結構、sql語句和索引
硬體:加記憶體、cpu
系統配置:修改資料庫的引數、配置等;
資料表結構:設計合理不合理
sql語句和索引:優化語句寫法、增加索引等
四、什麼時候優化
效能優化伴隨著
系統計畫和設計階段以及整個應用的週期!
五、頁與區
頁:資料儲存的基本單位(page),大小為8kb;
區:八個物理上連續的頁的集合,用來有效的管理頁;
頁型別: 1).資料頁(是儲存除text/ntext/image型別以外的資料行);
2). 索引頁:儲存索引資訊;
3).頁面可用空間頁:儲存可用頁空間資訊;
4).文字/影象頁:儲存text/ntext/image型別的資料;
5).全域性分配對映頁:儲存已經分配的盤區資訊;
6).索引分配對映頁:儲存乙個表或者索引使用的盤區資訊;
7).批量修改對映頁:儲存在上次backup/log時執行批量操作所修改的盤區資訊;
8).差量修改對映頁:儲存上次backup/database差異備份時所修改的盤區資訊。
需要注意:日誌檔案不包含頁,而是包含一系列日誌記錄;
資料頁資料頁大小為8kb
頁面報頭
資料行行偏移矩陣
六、正規化
1.第一正規化:強調的是列的原子性、即列不能夠再分成其它列;
2.第二正規化:首先要滿足它是1nf,另外還需要包含兩部分內容:一是表必須有乙個主鍵;二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分;
3.第三正規化:首先是2nf,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列a依賴於非主鍵列b,非主鍵列b依賴於主鍵的情況;
反正規化設計
不滿足正規化的模型,就是反正規化模型。
就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯;
七、設計表的效能因素考慮
1.適合的字段型別;
2.主鍵:每張表都需要乙個主鍵,用來標識唯一的一條資料;
3.外來鍵
4.約束和規則
合理的需求情況下欄位盡量少,對頻繁使用的大表進行分割,將不常使用的字段資訊存在其它表中,將大物件的列和普通字段分離出來,放在單獨的資料檔案上。
資料庫優化 資料庫設計優化
一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...
優化資料庫設計
資料庫設計步驟 1.需求分析 1.收集資訊 2.標識實體 1.標識實體的屬性 2.標識實體的關係 2.繪製e r圖 e 實體r 關係 3.繪製資料庫模型圖 4.根據sql行程資料庫 第一 二 三正規化 1 第一正規化 1nf 無重複的列 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本...
資料庫索引及優化
資料庫索引 一 索引的概念 索引是一種排好序的快速查詢的資料結構。索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存在磁碟上。我們平常所說的索引,如果沒有特別指明,都是指b樹 多路搜尋樹,並不一定是二叉的 結構組織的索引。其中聚集索引 次要索引 覆蓋索引 復合索引 字首索引 ...