日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql8.0创建属性_MySQL8.0新特性——资源管理

發布時間:2023/12/10 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql8.0创建属性_MySQL8.0新特性——资源管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL8.0——資源管理:

參考官方文檔:

https://dev.mysql.com/doc/refman/8.0/en/resource-groups.html

MySQL支持資源組的創建和管理,并允許將服務器內運行的線程分配給特定組,以便線程根據組可用的資源執行。組屬性可以控制其資源,以啟用或限制組中線程的資源消耗。DBA可以根據不同的工作負載修改這些屬性。

目前,CPU時間是可管理的資源,由“ 虛擬CPU ”的概念表示為包括CPU核心,超線程,硬件線程等的術語。服務器在啟動時確定可用的虛擬CPU數量,具有適當權限的數據庫管理員可以將這些CPU與資源組關聯,并將線程分配給組。

例如,要管理不需要以高優先級執行的批處理作業的執行,DBA可以創建 Batch資源組,并根據服務器的繁忙程度向上或向下調整其優先級。(也許分配給該組的批處理作業應該在白天以較低的優先級運行,在夜間以較高的優先級運行。)DBA還可以調整該組可用的CPU集??梢詥⒂没蚪媒M來控制線程是否可分配給它們。

1、資源組組件:

這些功能為MySQL中的資源組管理提供了SQL接口:

①:SQL語句支持創建,更改和刪除資源組,并允許將線程分配給資源組。優化程序提示可以將單個語句分配給資源組。

②:資源組權限可控制哪些用戶可以執行資源組操作。

③:該 INFORMATION_SCHEMA.RESOURCE_GROUPS 表公開了有關資源組定義的信息,而Performance Schema threads表顯示了每個線程的資源組分配。

④:狀態變量為每個管理SQL語句提供執行計數。

2.資源組屬性

資源組具有定義組的屬性。可以在創建組時設置所有屬性。某些屬性在創建時被修復; 其他人可以在此后的任何時間修改。

如下屬性在資源組創建時定義,無法修改:

①:每個組都有一個名字。資源組名稱是表和列名稱之類的標識符,除非它們包含特殊字符或保留字,否則無需在SQL語句中引用。組名稱不區分大小寫,最長可達64個字符。

②:每個組都有一個類型,或者是 SYSTEM或者USER。資源組類型會影響可分配給組的優先級值范圍,如稍后所述。此屬性與允許的優先級的差異一起使得能夠識別系統線程,以便保護它們免于針對用戶線程爭用CPU資源。

注意:系統和用戶線程對應于Performance Schema threads表中列出的后臺和前臺線程 。

如下這些屬性在資源組創建時定義,并且可以在以后的任何時間進行修改:

①:CPU親緣關系是資源組可以使用的一組虛擬CPU。親和關系可以是可用CPU的任何非空子集。如果組沒有親和力,則可以使用所有可用的CPU。

②:線程優先級是分配給資源組的線程的執行優先級。優先級值的范圍從-20(最高優先級)到19(最低優先級)。系統組和用戶組的默認優先級均為0。

③:可以啟用或禁用每個組,從而使管理員可以控制線程分配。線程只能分配給已啟用的組。

注意:

系統組的優先級高于用戶組,確保用戶線程的優先級不會高于系統線程:

①:對于系統資源組,允許的優先級范圍是-20到0。

②:對于用戶資源組,允許的優先級范圍是0到19。

3、資源組管理:

默認情況下,有一個系統組和一個用戶組,分別名為SYS_default和 USR_default。無法刪除這些默認組,并且無法修改其屬性。每個默認組都沒有CPU關聯,優先級為0。

注意:

①:新創建的系統和用戶線程分別分配給 SYS_default和 USR_default組。

②:對于用戶定義的資源組,將在創建組時分配所有屬性。創建組后,可以修改其屬性,但名稱和類型屬性除外。

③:創建和管理資源組需要有:RESOURCE_GROUP_ADMIN權限

--查看mysql默認的組:一個用戶組和系統組:mysql>?SELECT?*?FROM?INFORMATION_SCHEMA.RESOURCE_GROUPS\G

***************************?1.?row?***************************

RESOURCE_GROUP_NAME:?USR_default

RESOURCE_GROUP_TYPE:?USER

RESOURCE_GROUP_ENABLED:?1

VCPU_IDS:?0-0

THREAD_PRIORITY:?0

***************************?2.?row?***************************

RESOURCE_GROUP_NAME:?SYS_default

RESOURCE_GROUP_TYPE:?SYSTEM

RESOURCE_GROUP_ENABLED:?1

VCPU_IDS:?0-0

THREAD_PRIORITY:?0

2?rows?in?set?(0.01?sec)

其中:THREAD_PRIORITY值是0,表示默認的優先級; VCPU_IDS值示出了包括所有可用CPU的范圍內;對于默認組,顯示的值取決于運行MySQL服務器的系統。

例子:創建一個用戶資源組:

CREATE?RESOURCE?GROUP?Batch

TYPE?=?USER

VCPU?=?2-3

THREAD_PRIORITY?=?10;

mysql>?SELECT?*?FROM?INFORMATION_SCHEMA.RESOURCE_GROUPS????WHERE?RESOURCE_GROUP_NAME?=?'Batch'\G???---查看這個用戶資源組

***************************?1.?row?***************************

RESOURCE_GROUP_NAME:?Batch

RESOURCE_GROUP_TYPE:?USER

RESOURCE_GROUP_ENABLED:?1

VCPU_IDS:?2-3

THREAD_PRIORITY:?10

--:要將線程分配給Batch組,請執行以下操作:

SET RESOURCE GROUP Batch FOR thread_id;

--:如果自己的當前線程應該在 Batch組中,請在會話中執行以下語句:

SET RESOURCE GROUP Batch;

(此后,會話中的語句將使用Batch組資源執行 。)

例子2:要使用Batch組執行單個語句 ,請使用 RESOURCE_GROUP優化程序提示:

INSERT /*+ RESOURCE_GROUP(Batch) */ INTO t2 VALUES(2);

例子3:對于系統高負載的時間,減少分配給組的CPU數量,降低其優先級,或者(如圖所示):

ALTER RESOURCE GROUP Batch? VCPU = 3? ?THREAD_PRIORITY = 19;

例子4:在系統負載較輕的情況下,增加分配給組的CPU數量,提高其優先級,或者(如圖所示):

ALTER RESOURCE GROUP Batch? VCPU = 0-3? THREAD_PRIORITY = 0;

4、資源組復制

資源組管理是發生它的服務器的本地管理。資源組SQL語句和對resource_groups數據字典表的修改 不會寫入二進制日志,也不會被復制。

5、資源組的限制:

①:如果安裝了線程池插件,則資源組不可用。

②:資源組在macOS上不可用,它不提供用于將CPU綁定到線程的API。

③:在FreeBSD和Solaris上,忽略資源組線程優先級。(實際上,所有線程都以優先級0運行。)嘗試更改優先級會導致警告:

④:在Linux上,除非CAP_SYS_NICE設置了功能,否則將忽略資源組線程優先級。Linux系統的MySQL軟件包安裝程序應該設置此功能。對于使用壓縮 tar文件二進制分發或從源安裝,CAP_SYS_NICE可以使用setcap 命令手動設置該功能,指定mysqld可執行文件的路徑名 (這需要 sudo訪問)。您可以使用getcap檢查功能。例如:

shell> sudo setcap cap_sys_nice+ep ./bin/mysqld

shell> getcap ./bin/mysqld

./bin/mysqld = cap_sys_nice+ep

⑤:在Windows上,線程以五個線程優先級之一運行。資源組線程優先級范圍-20到19映射到這些級別。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql8.0创建属性_MySQL8.0新特性——资源管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。