百萬級資料庫系統分層優化 概述

2021-06-20 16:17:30 字數 684 閱讀 4775

網上有豐富的資料庫優化方案,但是大多都是零零碎碎,系統地介紹資料庫優化的很少。筆者根據自己的經驗,以及參考了其他高手的優化文章,整理乙份系統的優化方案。

資料庫優化的目的是提高db的工作效率,減少響應時間。基於此,筆者認為應該從如下四個層次來優化資料庫效能。

硬體層面優化

作業系統/dbms層面優化

db設計層面優化

程式設計層面的優化

1. 硬體層面優化 

該層面的優化是最底層的,包括記憶體、cpu、磁碟/磁碟陣列等硬體的優化。雖然可優化的點並不多,但是在整個資料庫優化中不可或缺。

2. 作業系統/dbms層面的優化 

包括dbms的選擇、快取的設定、資料檔案的儲存位置及方法(連續儲存/隨機儲存)、儲存引擎的選擇(mysql裡面會有多個引擎)、i/o優化(磁碟i/o、邏輯i/o)。該層面的優化內容相對不多,但是資料庫優化的瓶頸一般都在這裡。

3. db設計層面優化 

該層面可優化的點很多,包括資料庫正規化、資料表結構、資料型別、檢視、索引、表/字段冗餘、表分割(水平分割及垂直分割、分類分割)、表觸發器、命名等多方面,而且每個方面又有很多的知識點,這是資料庫優化的基礎。

4. 程式設計層面優化 

這裡由程式設計師控制層面的優化。包括sql語句、儲存過程、臨時表、業務邏輯、演算法設計、運算子、條件順序、資料庫函式。這層的知識點比較散,而且多。程式設計師應該下功夫的地方。

百萬級資料庫系統分層優化 概述

網上有豐富的資料庫優化方案,但是大多都是零零碎碎,系統地介紹資料庫優化的很少。筆者根據自己的經驗,以及參考了其他高手的優化文章,整理乙份系統的優化方案。資料庫優化的目的是提高db的工作效率,減少響應時間。基於此,筆者認為應該從如下四個層次來優化資料庫效能。硬體層面優化 作業系統 dbms層面優化 d...

百萬級資料庫優化方案

1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 複製 最好...

資料庫系統概述

資料是資料庫中儲存的基本物件。描述事物的符號記錄稱為資料。資料是有結構的,記錄是計算機中表示和儲存資料的一種格式或一種方法。資料庫是長期儲存在計算機內 有組織的 可共享的大量資料的集合。按一定的資料模型組織 描述和儲存,具有較小的冗餘度 較高的資料獨立性和易擴充套件性,並可為各種使用者共享。資料庫管...