單實(shí)例資源組隔離(即將下線)
Hologres支持細(xì)粒度資源管理能力,通過為不同的用戶賬號(hào)分配不同的計(jì)算資源(即CU,包括CPU和內(nèi)存),限制用戶使用計(jì)算資源的上限,實(shí)現(xiàn)單實(shí)例多負(fù)載的隔離,保證了用戶之間、應(yīng)用之間作業(yè)的互不影響。本文為您介紹如何使用資源組管理Hologres實(shí)例內(nèi)的計(jì)算資源,實(shí)現(xiàn)資源隔離。
背景信息
Hologres V1.0及以下版本支持在實(shí)例間進(jìn)行資源隔離,不支持對(duì)于實(shí)例內(nèi)部進(jìn)行更細(xì)粒度的用戶級(jí)別的資源隔離。但是在實(shí)際生產(chǎn)環(huán)境中,往往需要根據(jù)用戶在實(shí)例內(nèi)部進(jìn)行資源隔離,限制每個(gè)用戶使用的資源上限,以保證用戶之間的作業(yè)互不影響。為滿足上述細(xì)粒度的資源隔離訴求,Hologres新增支持使用資源組來助力您管理Hologres實(shí)例內(nèi)的計(jì)算資源,實(shí)現(xiàn)資源隔離。目前由于技術(shù)的局限性,暫時(shí)無法做到所有類型的計(jì)算負(fù)載都可以通過資源組隔離,請(qǐng)謹(jǐn)慎將該技術(shù)用在生產(chǎn)環(huán)境。完善的資源隔離技術(shù),推薦采用彈性計(jì)算組實(shí)例。
使用限制
僅Hologres V1.1及以上版本支持使用資源組管理Hologres實(shí)例內(nèi)的計(jì)算資源,如果您的實(shí)例是V1.1以下版本,請(qǐng)您使用自助升級(jí)或加入Hologres釘釘交流群反饋,詳情請(qǐng)參見如何獲取更多的在線支持?。
僅限具備Superuser權(quán)限的用戶使用資源組管理Hologres實(shí)例內(nèi)計(jì)算資源,否則系統(tǒng)會(huì)提示權(quán)限不足。
計(jì)算資源屬于實(shí)例級(jí)別,如果用戶有多個(gè)數(shù)據(jù)庫,所有數(shù)據(jù)庫共享同一個(gè)實(shí)例的計(jì)算資源,所有數(shù)據(jù)庫共享同一份資源分配方案。
HoloWeb可視化配置資源組
通過HoloWeb可視化配置資源組,相關(guān)操作如下。
新建資源組
進(jìn)入HoloWeb開發(fā)頁面,詳情請(qǐng)參見連接HoloWeb并執(zhí)行查詢。
在HoloWeb開發(fā)頁面的頂部菜單欄,單擊安全中心。
在安全中心頁面,單擊左側(cè)導(dǎo)航欄的資源組管理。
在資源組管理頁面,選擇目標(biāo)實(shí)例名稱,單擊新增資源組。
在新增資源組對(duì)話框,輸入資源組名稱并設(shè)置資源組配額,單擊確認(rèn),即可完成資源組的新建。
說明一個(gè)Hologres實(shí)例內(nèi)所有資源組配額總和不能超過1,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
刪除資源組
進(jìn)入HoloWeb開發(fā)頁面,詳情請(qǐng)參見連接HoloWeb并執(zhí)行查詢。
在HoloWeb開發(fā)頁面的頂部菜單欄,單擊安全中心。
在安全中心頁面,單擊左側(cè)導(dǎo)航欄的資源組管理。
在資源組管理頁面,單擊對(duì)應(yīng)資源組操作列的刪除,進(jìn)行資源組的刪除。
說明如果有用戶綁定到資源組,則該資源組不能被刪除。
調(diào)整資源組配額
進(jìn)入HoloWeb開發(fā)頁面,詳情請(qǐng)參見連接HoloWeb并執(zhí)行查詢。
在HoloWeb開發(fā)頁面的頂部菜單欄,單擊安全中心。
在安全中心頁面,單擊左側(cè)導(dǎo)航欄的資源組管理。
在資源組管理頁面目標(biāo)資源組的資源組配額列,單擊調(diào)整配額。
在調(diào)整配額對(duì)話框,調(diào)整資源組配額,單擊確認(rèn)。
綁定用戶
創(chuàng)建資源組后,您可以使用HoloWeb可視化綁定用戶至資源組。
進(jìn)入HoloWeb開發(fā)頁面,詳情請(qǐng)參見連接HoloWeb并執(zhí)行查詢。
在HoloWeb開發(fā)頁面的頂部菜單欄,單擊安全中心。
在安全中心頁面,單擊左側(cè)導(dǎo)航欄的資源組管理。
在資源組管理頁面,單擊對(duì)應(yīng)資源組操作列的綁定用戶。
在綁定資源組頁面,單擊新增綁定用戶。
在綁定用戶對(duì)話框,選擇用戶,單擊確認(rèn)。
說明如果在用戶的下拉列表找不到對(duì)應(yīng)的賬號(hào),則說明該賬號(hào)并未添加至當(dāng)前實(shí)例,您需要前往用戶管理頁面添加用戶。
一個(gè)用戶僅能被綁定一個(gè)資源組,若重復(fù)綁定用戶,以最新綁定的資源組為準(zhǔn)。
解綁用戶
進(jìn)入HoloWeb開發(fā)頁面,詳情請(qǐng)參見連接HoloWeb并執(zhí)行查詢。
在HoloWeb開發(fā)頁面的頂部菜單欄,單擊安全中心。
在安全中心頁面,單擊左側(cè)導(dǎo)航欄的資源組管理。
在資源組管理頁面,單擊對(duì)應(yīng)資源組操作列的綁定用戶。
在綁定資源組頁面,單擊對(duì)應(yīng)用戶操作列的解綁用戶。
在解綁用戶對(duì)話框,單擊確認(rèn)。
SQL方式配置資源組
查看資源組配置
查看所有資源組,每個(gè)資源組配置的配額,以及每個(gè)資源組綁定的用戶的SQL語句如下。
SELECT * FROM pg_holo_resource_groups;
樣例結(jié)果如下。
res_group_name | property_key | property_value ----------------+--------------+------------------------------------------ resource_1 | worker_limit | 0.3 default | worker_limit | 0.7 resource_1 | bind_users | [ "13xxxxxxxxx13", "p4_29xxxxxxxxxx19" ]
新增資源組
說明默認(rèn)情況下系統(tǒng)會(huì)創(chuàng)建一個(gè)名為default的資源組,并將所有計(jì)算資源都分配到該資源組,且將所有未明確綁定資源的用戶都綁定至該資源組。
創(chuàng)建其他資源組后,default資源組的規(guī)格等于所有資源組分配之后的剩余部分。
建議default資源組分配資源的百分比至少為0.3。
創(chuàng)建資源組的SQL語句如下。
CALL hg_create_resource_group ('resource_group_name', quota);
參數(shù)
說明
resource_group_name
資源組名稱。您可以使用英文字符,數(shù)字和下劃線自定義其名稱,最大長度50個(gè)字符。
quota
資源組分配資源的百分比。取值范圍為0.1~0.9,只支持一位小數(shù)點(diǎn)。
修改資源組配額
說明一個(gè)Hologres實(shí)例內(nèi)所有資源組配額總和不能超過1,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
修改資源組配額的SQL語句如下。
CALL hg_alter_resource_group ('resource_group_name', quota);
參數(shù)
說明
resource_group_name
資源組名稱。資源組必須是已經(jīng)創(chuàng)建的資源組,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
quota
資源組分配資源的百分比。取值范圍為0.1~0.9,只支持一位小數(shù)點(diǎn)。
刪除資源組
說明如果有用戶綁定到資源組,則該資源組不能被刪除。
刪除資源組的SQL語句如下。
CALL hg_drop_resource_group ('resource_group_name');
參數(shù)
說明
resource_group_name
資源組名稱。資源組必須是已經(jīng)創(chuàng)建的資源組,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
將用戶綁定至資源組
說明一個(gè)用戶僅能被綁定一個(gè)資源組,若重復(fù)綁定用戶,以最新綁定的資源組為準(zhǔn)。
您可以使用如下SQL查看當(dāng)前的用戶。
SELECT current_user;
在創(chuàng)建資源組后,您可以將用戶綁定至資源組,以限制其使用的計(jì)算資源。將用戶綁定至資源組的SQL語句如下。
語法示例
CALL hg_bind_resource_group('resource_group_name', 'user_name');
參數(shù)說明
參數(shù)
說明
resource_group_name
資源組名稱。資源組必須是已經(jīng)創(chuàng)建的資源組,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
user_name
用戶的名稱。必須是存在的用戶,且該用戶必須擁有訪問資源組對(duì)應(yīng)實(shí)例的權(quán)限,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
使用示例
CALL hg_bind_resource_group ('resource_1', 'p4_29xxxxxxxxxxx'); --注意,阿里云賬戶需要添加雙引號(hào) CALL hg_bind_resource_group ('resource_1', '"ALIYUN$xxxx@aliyun.com"'); CALL hg_bind_resource_group ('resource_1', '"RAM$xxx@xxx:xxxx"'); CALL hg_bind_resource_group ('resource_1', '"13xxxxxxxxxxx13"');
將用戶從資源組解綁
說明將用戶從資源組解綁后,該用戶隸屬于default資源組。
將用戶從資源組解綁的SQL語句如下。
語法示例
CALL hg_unbind_resource_group('resource_group_name', 'user_name');
參數(shù)說明
參數(shù)
說明
resource_group_name
資源組名稱。資源組必須是已經(jīng)創(chuàng)建的資源組,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
user_name
用戶的名稱。必須是存在的用戶,且該用戶必須擁有訪問資源組對(duì)應(yīng)實(shí)例的權(quán)限,否則系統(tǒng)會(huì)報(bào)錯(cuò)。
使用示例
CALL hg_unbind_resource_group ('resource_1', 'p4_29xxxxxxxxxxxxx9'); -- 注意,阿里云賬戶需要添加雙引號(hào) CALL hg_unbind_resource_group ('resource_1', '"RAM$xxxx@xxx:xxx"');
常見問題
Q:為什么資源組配額設(shè)置為0.5,CPU和內(nèi)存指標(biāo)仍然會(huì)大于50%?
目前資源組配額限制了大部分查詢引擎的CPU和內(nèi)存,但是有一小部分CPU和內(nèi)存在資源組之外不受限制(包括但不限于SQL解析、優(yōu)化、元數(shù)據(jù)處理、調(diào)度、PQE執(zhí)行、Compaction等)。同時(shí)實(shí)時(shí)寫入情況下,CPU受限制,內(nèi)存不受限制。所以會(huì)出現(xiàn)資源組總CPU和內(nèi)存指標(biāo)高于資源組所設(shè)置配額的情況。