記一次對DM數據庫的優化過程

某年某月某日的一個下午,接收到監控服務器的一條告警短信: 尊敬的運維工程師 XX,你好: 「192.168.136.200」數據庫服務器 CPU 異常,CPU 使用率 98.7%,請儘快處理。 看到這個消息渾身一緊,趕忙掐滅手中的煙,跑回辦公室。html

以上段子純屬捏造,若有雷同,我反正是不改。sql

言歸正傳,本文是記錄一次對達夢數據庫的優化過程。數據庫

處理問題的第一步,是須要了解當前服務器的情況,咱們經過如下兩種手段確認服務器瓶頸。服務器

系統情況

  • 經過服務器性能監控大盤觀察當前系統性能 image.png 經過上圖咱們看出 CPU 基本耗盡,IO 飆升。運維

  • 經過 sar 命令觀察服務器實時狀態
    sar 10 3 image.png 確認 CPU 被耗滿,沒有空閒。性能

經過個人細緻觀察,發現服務器 CPU 被耗滿。接下來須要查看數據庫服務器的配置參數是否合理,是否有慢查詢腳本。優化

參數優化

  • 查看 dm 配置文件
    cd /dm7/dmdbms/devdb cat dm.ini | grep -E "MEMORY_POOL|MEMORY_TARGET|BUFFER" image.png 發現數據庫參數配置爲安裝時候的默認配置,參數不合理,須要優化參數配置。ui

  • 備份原配置文件
    cp dm.ini dm.ini.bak設計

  • 修改配置 修改以下幾個關鍵參數,根據以前文章數據庫優化-實例優化中的表格進行優化(ps:當前數據庫內存 2G)3d

參數 優化建議 優化後的值,單位 M
MEMORY_POOL 建議爲內存的 90% 1800
MEMORY_TARGET 建議爲內存的 90% 1800
BUFFER 建議爲內存的 60% 1200
MAX_BUFFER 建議爲內存的 70% 1400
MAX_SESSIONS 1000
  • 重啓數據庫服務
    service DmServerdm restart

參數優化後咱們嘗試找出當前數據庫存在的慢查詢 SQL,看看是否能夠優化。

慢 SQL 優化

達夢數據庫不像 MySQL 能夠直接將慢查詢存放在指定位置,達夢須要經過 AWR 報告中找出慢查詢。(AWR 報告你們自行百度)
啓用 DM 快照須要調用 DBMS_WORKLOAD_REPOSITORY 包。

  • 使用 DBA 帳戶登陸數據庫
    disql SYSDBA/password

  • 建立 DBMS_WORKLOAD_REPOSITORY 系統包,開啓 AWR 快照功能。
    SP_INIT_AWR_SYS(1);

  • 啓用狀態檢測。
    SELECT SF_CHECK_AWR_SYS;

  • 設置 AWR 快照間隔時間(30 分鐘)
    CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(30);

  • 手動建立快照:
    DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
    這裏咱們能夠間隔幾分鐘多執行幾遍建立幾個不一樣的快照。

  • 查看建立的快照信息,包括快照 id:
    SELECT * FROM SYS.WRM$_SNAPSHOT; image.png

  • 查看 AWR 報告內容
    SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1,2));
    查看 snapshot 的 id 在 1~2 範圍內的 AWR 分析報告的帶 html 格式的內容。 image.png 這個內容格式基本沒辦法看,咱們須要將其轉化成 html 頁面查看。

  • 生成 HTML 文件(須要先對 awr 文件夾受權)

    chmod 777 /awr
    SYS.AWR_REPORT_HTML(1,2,'/awr','awr1.html');
  • 經過 AWR 報告找出慢 SQL
    image.png SQL Ordered by Elapsed Time 的內容就是慢查詢語句。
    在拿到慢查詢語句後咱們須要聯繫開發人員修改查詢語句,此次優化過程當中我經過給相關字段添加索引,改寫一部分 SQL 完成。

    可是數據表自己設計不合理這個沒有優化,因爲設計不合理致使查詢沒辦法走索引;而有些查詢則須要從業務角度進行優化,好比是否有必要對大表進行全表查詢而後再排序?等等等等。。。(至於數據庫 SQL 優化的具體策略咱們下期再聊)

在完成優化後重啓應用,再次經過sar 10 3觀察 CPU 性能,較優化前仍是有很多的提高的,又能夠抽空去抽根菸了。 image.png

歡迎關注個人我的公衆號:JAVA日知錄

相關文章
相關標籤/搜索