GaussDB(DWS) 資源管理技術淺析

      網友投稿 919 2025-03-31

      1? ?資源管理是什么?


      1.1??? 資源管理簡介

      通過引入資源監控和控制等手段,實現資源在可控的情況下被合理利用的目的,避免出現資源的無序使用,防止數據庫系統性能變慢、停止響應。資源管理可以實現以下功能:

      通過創建和管理隊列,實現隊列級別資源(CPU、內存、存儲空間)隔離和作業的異常處理;

      通過設置CN和隊列的并發上限,限制允許運行的并發數,超出并發數后作業排隊等待喚醒,防止并發過多導致性能下降;

      通過優先級控制實現資源的有效調度,實現高優先級作業優先運行;

      支持多維度資源監控視圖,可以監控作業、用戶和實例的資源消耗。

      1.2??? 資源管理功能

      資源管理主要包含并發控制、資源管控、資源監控以及異常作業處理。并發控制主要分為全局并發控制和資源池并發控制,其中資源池并發管控由快慢車道實現,快車道管控簡單作業,慢車道管控復雜作業,支持自動識別和手動切換快慢車道,理論上快車道并發大、作業運行時間短、占用資源少;慢車道并發少、作業運行時間長,占用資源多。

      資源管控通過對計算資源和存儲資源分別管控實現作業間資源隔離,保證單作業異常不會影響到其他作業運行。下面分別對計算資源和存儲資源管控進行概述:

      計算資源

      計算資源包含:CPU、IO和內存。GaussDB中CPU和內存資源關聯在隊列上,用戶通過關聯隊列使用計算資源。隊列按使用場景分為超戶隊列、默認隊列和用戶隊列。其中超戶隊列不受資源管控,用于運維和故障修復;默認隊列(default_pool)為數據庫初始化階段創建的隊列,未關聯用戶隊列的用戶使用默認隊列;用戶隊列為用戶自己創建的隊列,按照用戶配置的并發和資源進行管控。IO管控基于邏輯IO實現,根據作業運行時間及優先級對IO進行管控,配置異常處理規則后,在系統IO達到瓶頸后,主動降低作業IO優先級。

      2. 存儲資源

      存儲資源管控包含以下幾個方面:

      數據庫只讀檢測

      數據庫只讀檢測主要為防止出現磁盤滿的問題,實現邏輯如下:cm_server開啟enable_transaction_read_only情況下,每十分鐘檢查一次磁盤空間占用率,當 磁盤空間占用率超過閾值(默認90%)時,就通過guc參數設置數據庫只讀,數據庫只讀后只允許只讀作業運行,作業發生寫盤操作報錯退出。但是因為數據庫只讀會導致用戶所有業務無法運行,因此在磁盤空間占用率達到80%時會提前告警提示用戶。

      用戶/schema空間管控

      存儲資源包含:持久表空間、臨時表空間和算子落盤空間。臨時表空間和算子落盤空間是作業運行過程中占用的空間,屬于臨時占用空間。持久表空間和臨時占? 用空間采用兩種不同的管控策略,持久表空間管控通過對用戶(隊列)和schema空間限制實現,8.1.1版本之后的GaussDB空間管控均為單實例空間,防止出現數據傾斜導致的磁盤使用問題。臨時占用空間同樣支持在用戶層級設置空間限額,另外還提供異常規則查殺臨時空間占用異常的作業。

      異常處理規則

      GaussDB目前支持算子落盤異常規則,用戶通過管控面或gs_cgroup工具設置算子落盤異常規則,設置異常規則后作業執行過程中算子落盤空間達到閾值后報錯退出。

      1.3? ?資源管理框架

      用戶連接數據庫執行SQL后,SQL會經過全局并發隊列管控以及資源池隊列管控。在作業進入管控邏輯前設置定時器,作業pending超時報錯退出,作業經過隊列管控開始運行前重新設置定時器,作業運行超時報錯退出。作業下推DN執行時實時監控作業消耗的資源并上報CN,CN根據DN上報資源信息提供異常處理和監控視圖。

      下面對并發、內存和CPU管控配置方式進行簡要說明:

      全局并發隊列

      全局并發隊列采用GUC參數max_active_statements控制單個CN上運行并發執行的作業數量。采用全局并發隊列機制將控制所有普通用戶的執行作業,不區分復雜度,即執行語句都將作為一個執行單元,當并發執行的作業數量達到此參數閾值時,將進入隊列等待。對于初始用戶(Oid=10)執行的作業,不走全局并發控制邏輯。

      注:max_active_statements限制單CN上運行的作業數,默認值為60,假設用戶有3個DN,則實際全局并發上限為3*60=180;

      DDL和DML語句均受max_active_statements并發控制。

      2. 資源池并發隊列

      資源池并發隊列包含快車道并發隊列和慢車道并發隊列,配置方式如下:

      CREATE RESOURCE POOL respool_a WITH (max_dop=10,active_statements=5);

      其中max_dop為快車道并發上限,active_statements為慢車道并發上限。

      注:資源池隊列只限制DML語句,不限制DDL語句;

      max_dop限制單CN上資源池快車道并發數;

      active_statements在靜態負載管理模式下限制單CN上資源池慢車道并發數,在動態負載管理模式下限制所有CN上資源池慢車道并發數之

      3. 內存管控

      實例級別內存管控:guc參數max_process_memory限制DN和CN實例的最大可用內存,當使用內存超過max_process_memory時,作業報錯退出;

      可動態申請內存:max_dynamic_memory=max_process_memory-cstore_buffers(max_cstore_memory)-(udf_memory_limit - 200M) - max_shared_memory;

      資源池內存管控:使用并發點數計算可執行的并發數量,active_statements<=0情況下資源池內存不受控。資源池總點數:total_points = active_statements * 100,作業使用點數:active_points = (estimate_mem/respool_mem) * active_statements * 100,estimate_mem為優化器估算的作業內存,資源池點數耗盡出發排隊。

      4. CPU管控

      GaussDB主要利用cgroups做cpu資源的管控,涉及cpu、cpuacct、cpuset子系統,cpu配額管控基于cpu子系統的cpu.shares實現,該配置方法的好處是:OS cpu沒有占滿的情況下,不觸發cpu管控;cpu限額管控基于cpuset實現;cpuacct子系統主要用于cpu資源使用的監控。

      使用gs_cgroup工具設置cpu限額和配額,gs_cgroup工具常用命令如下:

      root用戶掛載cgroup

      gs_cgroup -U user -d #刪除當前掛載信息

      gs_cgroup -U user -c -H homepath [-D mountpath] --upgrade

      創建Class控制組

      gs_cgroup -S class1 -s 40 -c

      創建Workload控制組

      gs_cgroup -S class 1 -G wg1 -c

      為控制組分配cpu配額

      gs_cgroup -S class 1 -G wg1 -g 20 -u

      設置cpu限額

      gs_cgroup -S class 1 -G wg1 -g 30 -u –fixed

      刪除控制組

      gs_cgroup -S class 1 -G wg1 -d

      查看控制組信息

      gs_cgroup -p #靜態配置文件信息

      gs_cgroup -P #掛載信息(樹形結構)

      查詢規則

      設置查詢規則

      gs_cgroup -S class -G wg -E "blocktime=1200,elapsedtime=2400" –a

      gs_cgroup -S class -G wg -E "spillsize=256,broadcastsize=100" –a

      gs_cgroup -S class -E "allcputime=100" –penalty

      gs_cgroup -S class -E "qualificationtime=2400,cpuskewpercnt=90

      查詢異常規則

      select gs_respool_exception_info('rp_name')。

      cpu管控原理:

      cgroup掛載:使用root用戶掛載cgroup;

      gs_cgroup -U user -c -H homepath [-D mountpath] --upgrade

      cgroup創建:使用數據庫安裝用戶創建cgroup;

      gs_cgroup -S class1 -G wg1 -c

      cgroup關聯資源池:創建組資源池pr1關聯class控制組class1,創建業務資源池resp1關聯workload控制組wg1

      CREATE RESOURCE POOL pr1 WITH(CONTROL_GROUP='class1');

      CREATE RESOURCE POOL resp1 WITH(CONTROL_GROUP='class1:wg1');

      用戶關聯資源池:創建組用戶role1關聯組資源池pr1,創建業務用戶usr1關聯業務資源池resp1

      GaussDB(DWS) 資源管理技術淺析

      CREATE ROLE role1 RESOURCE POOL 'pr1' PASSWORD disable;

      CREATE USER usr1 RESOURCE POOL 'resp1' PASSWORD 'Gauss_234' USER GROUP 'role1';

      使用業務用戶usr1執行復雜作業,作業執行過程中調用api函數cgroup_attach_task將作業attach到class1:wg1控制組上實現cpu管控。

      云數據庫 GaussDB(for openGauss)

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格怎么指定姓名與成績剔除?
      下一篇:如何在excel批量加-
      相關文章
      亚洲视频在线视频| 好看的亚洲黄色经典| 亚洲无删减国产精品一区| 久久久久久久尹人综合网亚洲| 国产亚洲人成网站在线观看| 亚洲一级特黄大片无码毛片| 婷婷亚洲天堂影院| 亚洲国产婷婷综合在线精品| 亚洲av无码乱码在线观看野外| www亚洲精品少妇裸乳一区二区| 男人的天堂亚洲一区二区三区 | 国产亚洲精品VA片在线播放| 亚洲av乱码一区二区三区| 亚洲一级毛片免费看| 亚洲国产成人99精品激情在线| 亚洲综合色区中文字幕| 亚洲国产系列一区二区三区| 亚洲午夜无码久久久久小说 | 亚洲色大网站WWW永久网站| 亚洲色偷精品一区二区三区| 亚洲av无码av在线播放| 色九月亚洲综合网| 亚洲第一福利网站在线观看| 亚洲熟伦熟女新五十路熟妇| 国产成人麻豆亚洲综合无码精品| 亚洲小说区图片区另类春色| 亚洲成a人片在线观看无码专区| 国产亚洲高清不卡在线观看| 亚洲av日韩综合一区在线观看| 亚洲自偷自偷精品| 亚洲午夜国产精品无卡| 亚洲色大成网站www尤物| 亚洲AV无码国产精品永久一区| 日韩精品电影一区亚洲| 久久亚洲国产精品五月天婷| 国产精品亚洲аv无码播放| 综合自拍亚洲综合图不卡区| 亚洲乱码在线卡一卡二卡新区| 亚洲成a∧人片在线观看无码 | 久久亚洲AV成人无码| 亚洲首页国产精品丝袜|