達夢8技術支援筆記(9)

2022-09-11 04:15:10 字數 2709 閱讀 8619

1、資料庫訪問優化法則簡介

從圖上可以看到基本上每種裝置都有兩個指標:

延時(響應時間):表示硬體的突發處理能力;

頻寬(吞吐量):代表硬體持續處理能力。

從上圖可以看出,計算機系統硬體效能從高到代依次為:

cpu——cache(l1-l2-l3)——記憶體——ssd硬碟——網路——硬碟

根據資料庫知識,我們可以列出每種硬體主要的工作內容:

cpu及記憶體:快取資料訪問、比較、排序、事務檢測、sql解析、函式或邏輯運算;

網路:結果資料傳輸、sql請求、遠端資料庫訪問(dblink);

硬碟:資料訪問、資料寫入、日誌記錄、大資料量排序、大表連線。

這個優化法則歸納為5個層次:

1、  減少資料訪問(減少磁碟訪問)

2、  返回更少資料(減少網路傳輸或磁碟訪問)

3、  減少互動次數(減少網路傳輸)

4、  減少伺服器cpu開銷(減少cpu及記憶體開銷)

5、  利用更多資源(增加資源)

由於每一層優化法則都是解決其對應硬體的效能問題,所以帶來的效能提公升比例也不一樣。傳統資料庫系統設計是也是盡可能對低速裝置提供優化方法,因此針對低速裝置問題的可優化手段也更多,優化成本也更低。我們任何乙個sql的效能優化都應該按這個規則由上到下來診斷問題並提出解決方案,而不應該首先想到的是增加資源解決問題。

以下是每個優化法則層級對應優化效果及成本經驗參考:

優化法則

效能提公升效果

優化成本

減少資料訪問

1~1000

低返回更少資料

1~100

低減少互動次數

1~20

低減少伺服器cpu開銷

1~5低

利用更多資源

@~10

2、優化

1、別用<>不等於,不走索引,拆成》 or

2、null的判斷不走索引,盡量給列預設值。

3、union all 替換union。

4、全模糊查詢拆開,或者用全文索引。

5、where 後面先放走索引的,刪的多的。

6、隱式轉換不走索引

7、data時間戳盡量用》\< ,用函式不走索引。

8、>=   <= 比 <   > 快。

9、不用*。

10、索引對dml(insert,update,delete)附加的開銷有多少?

索引對於insert效能降低56%

索引對於update效能降低47%

索引對於delete效能降低29%

因此對於寫io壓力比較大的系統,表的索引需要仔細評估必要性,另外索引也會占用一定的儲存空間。

很多時候我們需要按一些id查詢資料庫記錄,我們可以採用乙個id乙個請求發給資料庫,如下所示:

for :var in ids do begin

select * from mytable where id=:var;

end;

我們也可以做乙個小的優化, 如下所示,用id inlist的這種方式寫sql:

select * from mytable where id in(:id1,id2,...,idn);

另外當前資料庫一般都是採用基於成本的優化規則,當in數量達到一定值時有可能改變sql執行計畫,從索引訪問變成全表訪問,這將使效能急劇變化。隨著sql中in的裡面的值個數增加,sql的執行計畫會更複雜,占用的記憶體將會變大,這將會增加伺服器cpu及記憶體成本。

評估在in裡面一次放多少個值還需要考慮應用伺服器本地記憶體的開銷,有併發訪問時要計算本地資料使用週期內的併發上限,否則可能會導致記憶體溢位。

綜合考慮,一般in裡面的值個數超過20個以後效能基本沒什麼太大變化,也特別說明不要超過100,超過後可能會引起執行計畫的不穩定性及增加資料庫cpu及記憶體成本,這個需要專業dba評估。

12、合理使用merge join 和hash join。

13、指定並行查詢parallel。

14、繫結變數復用執行計畫

15、用exists代替distanct

16、寫定時job在晚上預處理資料。

3、例項

1、cpu過高,開啟游標共享,分會話級和永久。

2、資料量大使用分割槽技術、merge into技術,外部表優化。

3、少用函式索引,其維護成本和索引儲存空間大於普通索引。

4、復合索引的字首性和可選性,資料檔案離線,日誌發現是非同步i/o過多,超出允許範圍,綜合查詢模組在各個條件上建立組合索引導致。

5、監控業務場景索引,刪除無用索引,定期清理索引碎片,rebuild。

6、oltp優化parse階段,olap優化execute和fetch階段。

7、提高表連線效能,分析巢狀連線、排序連線、雜湊連線。

8、hint強制修改執行計畫,全域性生效。

9、擴充套件快的頻繁申請,臨時表的反覆分配,日誌組的反覆切換,調大引數。

達夢8技術支援筆記(12)

dm審計分析工具 1 主要功能 審計規則的建立與修改,審計記錄的檢視與匯出 2 審計開關和許可權 在dm 系統中,專門為審計設定了開關,要使用審計功能首先要開啟審計開關。審計開 關由過程void sp set enable audit param int 控制,過程執行完後會立即 生效,param ...

達夢8技術支援筆記(11)

dmetl問題學習 1 如何選擇合適的增量抽取方式?可以根據各種增量抽取方式的特點來選擇合適的增量抽取方式,各種方式的 特點如下 觸發器增量抽取方式 對etl 伺服器的負擔較小,實現簡潔,需要在源資料 庫中建立觸發器,適用於資料量大的表,實時性要求較高的場合。影子表增量抽取方式 通過對比影子表和原表...

達夢8技術支援筆記(10)

一 外部表 external 1 不支援mpp,模式名預設為當前使用者 2 不能存在大字段,約束,索引 3 唯讀,不存在表鎖,不允許truncate 4 支援rowid user,uid偽列,不支援tid 5 ctl中預設編碼方式gbk 二 列表 huge 表檔案只存資料,mir負責映象,表名 au...