亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

淺談數據庫資源使用的按需分配方法

2024-07-21 02:48:05
字體:
來源:轉載
供稿:網友
淺談數據庫資源使用的按需分配方法SQL Server資源調節器的作用

如果有5個業務都很繁忙的數據庫需要部署在一臺服務器上,為了避免相互的資源搶占,我們通常會在服務器上安裝5個SQL Server實例來分別承載這5個數據庫,然后分別設置每個實例的最大和最小內存、CPU掩碼等,用以s控制這5個業務數據庫的資源分配。

筆者的公司曾經就有這樣的案例。這種方式的缺點顯而易見:首先是授權,在上述例子中,5個SQL Server實例的費用應該是比1個要高;其次是管理成本提高,DBA不得不安裝和維護5個實例。那么,有沒有更好的方法呢?

其實從SQL Server2008(企業版)開始,微軟就已經考慮過這種情況,并提出解決方案——“SQL Server的資源調節器”。SQL Server的資源調節器引入了一種多租戶的理念,它將一個SQL Server實例的資源“出租”給不同的客戶端負載,每個客戶端負載所分配到的資源彼此隔離,互不影響。

下面我們看看SQL Server的資源調節器的原理和一個實例的來了解下SQL Server的資源調節器:

SQL Server的資源調節器的原理

在SQL Server的資源調節器有三個重要的概念:

1. 資源池

在上文多租戶的理念中,不同的客戶端負載之所以能夠分配彼此隔離的資源,其原因就是他們擁有各自獨立的資源池。

在資源池里面,DBA可以設置最大、最小內存和CPU資源,也就是說,資源池實際上就是內存和CPU資源的集合,DBA根據業務的需要,可以為重要業務設置較大的資源池,而SLA較低的業務設置小的資源池。

2. 工作組的負載

工作組負載是一些具有共同特征的客戶端請求的集合。SQL Server將客戶端請求按照一定的規則分類后,形成多個工作組負載。

工作組負載是資源池利用的主體。將不同的資源池綁定到不同的工作組負載,從而實現了各個工作組負載的資源隔離。

3. 分類器

分類器提供一套劃分工作組負載的規則,在此規則基礎上,SQL Server將客戶端的請求進行分類形成多個工作組。

舉個例子:把SQL Server的用戶名作為一個分類器,來自A用戶的所有請求劃分到工作組負載1,來自B用戶的所有請求劃分到工作組負載2。然后工作組負載1和2分別對應不同的資源池。

原理圖如下:

clip_image002

用資源調節器來分配兩個數據庫的CPU資源

假設有市場和銷售兩個部門,各自使用不同的數據庫,但兩個數據庫在同一個SQL Server實例上,為了確保兩個部門的數據庫彼此不受對方資源使用的影響,我們使用SQL Server的資源調控器來控制兩個數據庫的資源使用。

1. 創建測試數據庫

create database Sales

create database Marketing

2. 配置CPU環境

為了更好的查看CPU資源的爭用情況,我們先設置SQL Server的CPU affinity mask,使SQL Server只能使用一個邏輯核心,所有的工作組負載共享同一個CPU核心資源。

sp_configure 'show advanced', 1

GO

RECONFIGURE

GO

sp_configure 'affinity mask', 1

GO

RECONFIGURE

GO

3. 配置資源調控器

1) 創建資源池

CREATE RESOURCE POOL SalesPool

CREATE RESOURCE POOL MarketingPool

2) 創建工作組負載

--創建SalesGroup的工作組,并綁定到SalesPool

CREATE WORKLOAD GROUP SalesGroup

USING SalesPool

--創建MarketingGroup的工作組,并綁定到MarketingPool

CREATE WORKLOAD GROUP MarketingGroup

USING MarketingPool

GO

3) 創建分類器(分類函數)

--創建自定義的二分類函數,按照客戶端連接字符串中的數據庫分類并返回數據庫的名字

CREATE FUNCTION CLASSIFIER_DbName()

RETURNS SYSNAME WITH SCHEMABINDING

BEGIN

DECLARE @val varchar(32)

SET @val = 'default';

IF 'Sales' = ORIGINAL_DB_NAME()

SET @val = 'SalesGroup';

ELSE IF 'Marketing' = ORIGINAL_DB_NAME()

SET @val = 'MarketingGroup';

RETURN @val;

END

GO

--將分類函數綁定到資源調節器中

ALTER RESOURCE GOVERNOR

WITH (CLASSIFIER_FUNCTION = dbo.CLASSIFIER_DbName)

GO

4) 啟用資源調控器

ALTER RESOURCE GOVERNOR RECONFIGURE

GO

4. 測試sales數據庫的負載

Ø 創建如下測試SQL語句,并保存到workload.sql文件中

SET NOCOUNT ON

DECLARE @i INT

DECLARE @s VARCHAR(100)

SET @i = 100000000

WHILE @i > 0

BEGIN

SELECT @s = @@version;

SET @i = @i - 1;

END

Ø 以管理員身份運行cmd

Ø 然后以sqlcmd的方式加載workload.sql語句

sqlcmd -S localhost/sql2014 -U sa -P 95938 -d Sales –I "d:/workload.sql"

這條語句的意思是在sales數據庫中執行workload.sql,

clip_image004

Ø 打開性能計數器

SQLServer:Resource Pool Stats->CPU usage

clip_image006

可以看到salespool的CPU資源占用情況如下圖:

下圖中,salespool CPU資源的使用率為25%,(相當于完全使用了使用了筆者電腦4核CPU中1核資源(前面設置了SQL Server的affinity mask為1))。因為我們在前面的分類器的中把sales數據庫綁定到了資源池salespool上了,sales數據庫的CPU資源占用情況就是25%。

clip_image008

5. 再測試下sales庫和marketing庫的資源爭用情況

Ø 新開一個cmd窗口,執行如下語句:

sqlcmd -S localhost/sql2014 -U sa -P 95938 -d Marketing -i "d:/workload.sql"

這條語句的意思是在Marketing數據庫中執行workload.sql,

此時出現如下結果:

salespool和marketingPool共享25%的CPU資源(且兩者占用的資源量相同(接近),這是因為他們都是采用默認的資源分配權重)。這里的marketingPool同上文中介紹的salespool一樣,它也是綁定到了一個數據庫,不同的是這里綁定了marketing數據庫。

因此,這兩個資源池的CPU資源爭用反映的就是sales數據庫和Marketing數據庫的資源爭用。

clip_image010

備注:紅色的曲線代表sales pool

綠色曲線代表marketingPool

Ø 現在,我們更改銷售系統的資源池的CPU資源的權重為70

ALTER RESOURCE POOL SalesPool

WITH (MIN_CPU_PERCENT = 70)

GO

ALTER RESOURCE GOVERNOR RECONFIGURE

GO

結果如下:

此時salesPool占用的資源將增加到70%,而marketingPool的CPU資源降低到30%,兩者按照7:3進行分配。

這樣就相當于給sales數據庫分配了更多的CPU資源,而削減了marketing的CPU資源。

clip_image012

6. 最后,我們來看一個設置最大CPU資源權重的例子

--設置MarketingPool的最大CPU占用

ALTER RESOURCE POOL MarketingPool

WITH (MAX_CPU_PERCENT = 5)

GO

ALTER RESOURCE GOVERNOR RECONFIGURE

GO

此時,在marketingPool占用的資源如下圖:

clip_image014

如果此時在sales數據庫中執行的workload.sql已經執行完畢,則marketing數據庫會突破之前設置的MAX_CPU_PERCENT = 5的限制,使用到全部CPU資源,這樣的好處就是可以充分利用資源,避免資源浪費。如下圖的藍色框中的曲線。

clip_image016

當然,如果你一定要限制Marketing數據庫的CPU資源必須在5%以內,可以通過如下語句實現:

ALTER RESOURCE POOL MarketingPool

WITH (CAP_CPU_PERCENT=5)

GO

ALTER RESOURCE GOVERNOR RECONFIGURE

GO

總結

SQL Server資源調節器通過資源池、工作組負載、分類器等機制可以為不同的數據庫、不同的請求、不同的用戶分配彼此獨立的CPU、內存、IO等資源,起到資源調節和隔離的作用。通過該技術,我們可以在確保每個數據庫分配到合理的資源的前提下,合并多個數據庫到同一個實例,也可以為某些SQL代碼預定義服務器資源及避免某些SQL語句占用過多資源,還可以按照業務的優先級分配資源等??傊?,使用SQL Server資源調節器可以更為細膩的分配服務器資源,是DBA的必殺技之一。

2015.1.8補充:

我在樣例中使用的創建資源池的方法非常簡單,其實,詳細的語法如下:

CREATE RESOURCE POOL pool_name[ WITH([ MIN_CPU_PERCENT = value ][ [ , ] MAX_CPU_PERCENT = value ] [ [ , ] CAP_CPU_PERCENT = value ] [ [ , ] AFFINITY {SCHEDULER =AUTO | ( <scheduler_range_spec> ) | NUMANODE = ( <NUMA_node_range_spec> )} ] [ [ , ] MIN_MEMORY_PERCENT = value ][ [ , ] MAX_MEMORY_PERCENT = value ][ [ , ] MIN_IOPS_PER_VOLUME = value ][ [ , ] MAX_IOPS_PER_VOLUME = value ]) ][;]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一国产精品| 精品一区二区三区三区| 中文字幕日韩精品有码视频| 国产在线视频一区| 久久精品人人爽| 91综合免费在线| 国产成人在线播放| 日韩a**站在线观看| 精品成人乱色一区二区| 国产精品视频导航| 欧美精品videos另类日本| 日韩精品在线私人| 国产精品网址在线| 久久亚洲精品视频| 亚洲va欧美va国产综合剧情| 2019亚洲日韩新视频| 久久久久久久久中文字幕| 日韩一区视频在线| 两个人的视频www国产精品| 日本欧美国产在线| 在线看福利67194| 日韩欧美一区二区三区| 国内精品小视频| 日韩免费观看网站| 中文字幕国产亚洲2019| 精品国产视频在线| 精品久久久国产精品999| 久久久久国产精品一区| 97**国产露脸精品国产| 亚洲网站在线播放| 97香蕉久久夜色精品国产| 久久视频免费在线播放| 欧美高清第一页| 国产主播欧美精品| 国产亚洲精品久久久| 91国产美女在线观看| 亚洲大胆美女视频| 视频在线观看99| 久久人人爽人人爽人人片av高请| 亚洲男人天天操| 国产精品自产拍高潮在线观看| 欧美精品一区二区免费| 91香蕉亚洲精品| 欧美激情亚洲另类| 国产精品三级久久久久久电影| 成人黄色激情网| 欧美激情第一页xxx| 美日韩精品免费观看视频| 国产成一区二区| 97香蕉久久夜色精品国产| 欧美精品一区三区| 黑人欧美xxxx| 色偷偷88888欧美精品久久久| 久久久天堂国产精品女人| 国产精品成久久久久三级| 日韩成人黄色av| 亚洲第一福利在线观看| 国内外成人免费激情在线视频网站| 欧美有码在线观看视频| 96精品久久久久中文字幕| 国产精品高潮粉嫩av| 丝袜情趣国产精品| 欧美国产日韩视频| 91精品视频在线看| 成人在线精品视频| 国产中文日韩欧美| 欧美成人免费小视频| 亚洲国产精品久久久久秋霞蜜臀| 日韩va亚洲va欧洲va国产| 57pao国产成人免费| 国产精品一香蕉国产线看观看| 国产精品美女av| 色综合久久中文字幕综合网小说| 2019亚洲男人天堂| 精品久久久久久久久久ntr影视| 日韩av有码在线| 538国产精品一区二区在线| 日韩成人免费视频| 日韩av资源在线播放| 九九久久久久99精品| 2020久久国产精品| 91久久综合亚洲鲁鲁五月天| 久久久av亚洲男天堂| 亚洲成人久久电影| 欧美成人全部免费| 日本精品久久久久影院| 91欧美激情另类亚洲| 欧美在线视频免费播放| 亚洲图片制服诱惑| 亚洲欧美激情四射在线日| 欧美大片在线免费观看| 国产精品视频免费在线观看| 精品偷拍一区二区三区在线看| 亚洲久久久久久久久久| 亚洲国产私拍精品国模在线观看| 国产99久久久欧美黑人| 亚洲日本欧美日韩高观看| 91超碰中文字幕久久精品| 伊人久久大香线蕉av一区二区| 97视频免费在线观看| 亚洲成年人在线| 久久久久久欧美| 国产欧美日韩亚洲精品| 欧美精品一区二区免费| 欧美日韩一区二区三区在线免费观看| 成人高h视频在线| 日本久久久久亚洲中字幕| 国产精品高清在线| 久久福利视频导航| 亚洲精品国精品久久99热一| 日韩av在线导航| 国产精品久久久久久亚洲影视| 国产精品黄色影片导航在线观看| 国产亚洲xxx| 国产精品国产三级国产专播精品人| 91精品国产一区| 国产日本欧美一区二区三区在线| 中文字幕久热精品在线视频| 国产69精品99久久久久久宅男| 色婷婷av一区二区三区在线观看| 国产一区二区三区四区福利| 欧美一级大片在线免费观看| 国产日韩精品在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久精品成人一区二区三区| 国产精品电影观看| 国产91|九色| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧美在线免费| 7777kkkk成人观看| 日本不卡免费高清视频| 91精品在线观看视频| 色爱av美腿丝袜综合粉嫩av| 欧美老妇交乱视频| 成人网在线免费观看| 色先锋资源久久综合5566| 日本精品视频在线| 日韩午夜在线视频| 国产精品成人v| 91色视频在线观看| 欧美激情中文字幕乱码免费| 中文字幕亚洲字幕| 国产亚洲美女久久| 国产精品日韩精品| 国产精品免费在线免费| 午夜精品国产精品大乳美女| 国产精品极品美女在线观看免费| 成人久久久久久| 亚洲国产一区二区三区四区| 国产情人节一区| 精品国产自在精品国产浪潮| 国产精品久久久久久久久久新婚| 欧美日韩精品中文字幕| 狠狠干狠狠久久| 欧美www视频在线观看| 亚洲人成在线电影| 日韩av理论片| 国产99久久精品一区二区永久免费| 中文字幕成人精品久久不卡| 97色伦亚洲国产| 欧美三级xxx| 91精品在线一区| 国产精品亚洲美女av网站| 国产成人精品电影久久久|