欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解MySQL資源組的使用方法

 更新時間:2024年07月29日 10:24:10   作者:icysmile131  
MySQL支持創(chuàng)建和管理資源組,并允許將服務(wù)器內(nèi)運(yùn)行的線程分配給特定的組,本文主要介紹了詳解MySQL資源組的使用方法,具有一定的參考價值,感興趣的可以了解一下

MySQL支持創(chuàng)建和管理資源組,并允許將服務(wù)器內(nèi)運(yùn)行的線程分配給特定的組,以便線程根據(jù)組可用的資源執(zhí)行。組屬性允許控制其資源,以啟用或限制組中線程的資源消耗。DBA可以針對不同的工作負(fù)載適當(dāng)?shù)匦薷倪@些屬性。

目前,CPU時間是一種可管理的資源,以“虛擬CPU”的概念表示,該概念包括CPU核心、超線程、硬件線程等。服務(wù)器在啟動時確定有多少虛擬CPU可用,具有適當(dāng)權(quán)限的數(shù)據(jù)庫管理員可以將這些CPU與資源組相關(guān)聯(lián),并將線程分配給組。

例如,為了管理不需要以高優(yōu)先級執(zhí)行的批處理作業(yè)的執(zhí)行,DBA可以創(chuàng)建一個批處理資源組,并根據(jù)服務(wù)器的繁忙程度調(diào)整其優(yōu)先級。可以啟用或禁用組來控制線程是否可分配給它們。

以下部分描述了MySQL中資源組使用的各個方面:

1 資源組元素

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

  • SQL語句允許創(chuàng)建、更改和刪除資源組,并允許將線程分配給資源組。優(yōu)化器提示允許將單個語句分配給資源組。
  • 資源組權(quán)限提供對哪些用戶可以執(zhí)行資源組操作的控制。
  • 信息架構(gòu)RESOURCE_GROUPS表顯示有關(guān)資源組定義的信息,性能架構(gòu)線程表顯示每個線程的資源組分配。
  • 狀態(tài)變量提供每個管理SQL語句的執(zhí)行計數(shù)。

2 資源組屬性

資源組具有定義該組的屬性。所有屬性都可以在組創(chuàng)建時設(shè)置。某些屬性在創(chuàng)建時是固定的;其他可以在此后的任何時間進(jìn)行修改。

這些屬性是在創(chuàng)建資源組時定義的,不能修改:

  • 每個組都有一個名稱。資源組名稱是類似于表和列名的標(biāo)識符,除非它們包含特殊字符或是保留字,否則不需要在SQL語句中引用。組名不區(qū)分大小寫,最長可達(dá)64個字符。
  • 每個組都有一個類型,即SYSTEM或USER。資源組類型影響可分配給該組的優(yōu)先級值的范圍,如后所述。該屬性以及允許優(yōu)先級的差異使系統(tǒng)線程能夠被識別,從而保護(hù)它們免受用戶線程對CPU資源的爭用。

系統(tǒng)和用戶線程對應(yīng)于性能模式線程表中列出的后臺和前臺線程。

這些屬性是在資源組創(chuàng)建時定義的,此后可以隨時修改:

  • CPU相關(guān)性是資源組可以使用的一組虛擬CPU。親和性可以是可用CPU的任何非空子集。如果一個組沒有關(guān)聯(lián),它可以使用所有可用的CPU。
  • 線程優(yōu)先級是分配給資源組的線程的執(zhí)行優(yōu)先級。優(yōu)先級值的范圍從-20(最高優(yōu)先級)到19(最低優(yōu)先級)。系統(tǒng)組和用戶組的默認(rèn)優(yōu)先級均為0。

允許系統(tǒng)組的優(yōu)先級高于用戶組,確保用戶線程的優(yōu)先級永遠(yuǎn)不會高于系統(tǒng)線程:

(1)對于系統(tǒng)資源組,允許的優(yōu)先級范圍為-20到0。

(2)對于用戶資源組,允許的優(yōu)先級范圍為0到19。

  • 每個組都可以啟用或禁用,使管理員能夠控制線程分配。線程只能分配給已啟用的組。

3 資源組管理

默認(rèn)情況下,有一個系統(tǒng)組和一個用戶組,分別命名為SYS_default和USR_default。不能刪除這些默認(rèn)組,也不能修改它們的屬性。每個默認(rèn)組都沒有CPU相關(guān)性,優(yōu)先級為0。

新創(chuàng)建的系統(tǒng)線程和用戶線程分別分配給SYS_default和USR_default組。

對于用戶定義的資源組,所有屬性都在組創(chuàng)建時指定。創(chuàng)建組后,可以修改其屬性,但名稱和類型屬性除外。

要創(chuàng)建和管理用戶定義的資源組,請使用以下SQL語句:

  • CREATE RESOURCE GROUP創(chuàng)建一個新組。
  • ALTER RESOURCE GROUP修改現(xiàn)有組。
  • DROP RESOURCE GROUP刪除現(xiàn)有組。

這些語句需要RESOURCE_GROUP_ADMIN權(quán)限。

要管理資源組分配,請使用以下功能:

  • SET RESOURCE GROUP將線程分配給一個組。
  • RESOURCE_GROUP優(yōu)化器提示將單個語句分配給一個組。

這些操作需要RESOURCE_GROUP_ADMIN或RESOURCE-GROUP_USER權(quán)限。

資源組定義存儲在Resource_groups數(shù)據(jù)字典表中,以便組在服務(wù)器重新啟動時保持不變。因為resource_groups是數(shù)據(jù)字典的一部分,所以用戶無法直接訪問它。使用信息模式Resource_GROUPS表可以獲得資源組信息,該表被實現(xiàn)為數(shù)據(jù)字典表上的視圖。

最初,RESOURCE_GROUPS表中有以下行描述默認(rèn)組:

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-3
       THREAD_PRIORITY: 0
*************************** 2. row ***************************
   RESOURCE_GROUP_NAME: SYS_default
   RESOURCE_GROUP_TYPE: SYSTEM
RESOURCE_GROUP_ENABLED: 1
              VCPU_IDS: 0-3
       THREAD_PRIORITY: 0

THREAD_PRIORITY值為0,表示默認(rèn)優(yōu)先級。VCPU_IDS值顯示了包括所有可用CPU的范圍。對于默認(rèn)組,顯示的值因MySQL服務(wù)器運(yùn)行的系統(tǒng)而異。

前面的討論提到了一個場景,該場景涉及一個名為Batch的資源組來管理不需要高優(yōu)先級執(zhí)行的批處理作業(yè)的執(zhí)行。要創(chuàng)建這樣一個組,請使用類似以下的語句:

CREATE RESOURCE GROUP Batch
  TYPE = USER
  VCPU = 2-3            -- assumes a system with at least 4 CPUs
  THREAD_PRIORITY = 10;

要驗證資源組是否按預(yù)期創(chuàng)建,請檢查resource_GROUPS表:

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

如果THREAD_PRIORITY值為0而不是10,請檢查您的平臺或系統(tǒng)配置是否限制了資源組功能;請參閱資源組限制。

要將線程分配給批處理組,請執(zhí)行以下操作:

SET RESOURCE GROUP Batch FOR thread_id;

此后,命名線程中的語句將使用批處理組資源執(zhí)行。

如果會話自己的當(dāng)前線程應(yīng)該在Batch組中,請在會話中執(zhí)行以下語句:

SET RESOURCE GROUP Batch;

此后,會話中的語句將使用批處理組資源執(zhí)行。

要使用Batch組執(zhí)行單個語句,請使用RESOURCE_group優(yōu)化器提示:

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

分配給批處理組的線程使用其資源執(zhí)行,可以根據(jù)需要進(jìn)行修改:

  • 當(dāng)系統(tǒng)負(fù)載很高時,減少分配給該組的CPU數(shù)量,降低其優(yōu)先級,或者(如圖所示)兩者兼有:
ALTER RESOURCE GROUP Batch
  VCPU = 3
  THREAD_PRIORITY = 19;
  • 在系統(tǒng)負(fù)載較輕的情況下,增加分配給組的CPU數(shù)量,提高其優(yōu)先級,或(如圖所示)兩者兼有:
ALTER RESOURCE GROUP Batch
  VCPU = 0-3
  THREAD_PRIORITY = 0;

4 資源組復(fù)制

資源組管理是發(fā)生該管理的服務(wù)器的本地管理。資源組SQL語句和對Resource_groups數(shù)據(jù)字典表的修改不會寫入二進(jìn)制日志,也不會被復(fù)制。

5 資源組限制

在某些平臺或MySQL服務(wù)器配置上,資源組不可用或有限制:

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

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

在FreeBSD和Solaris上,資源組線程優(yōu)先級被忽略。(實際上,所有線程都以優(yōu)先級0運(yùn)行。)嘗試更改優(yōu)先級會導(dǎo)致警告:

mysql> ALTER RESOURCE GROUP abc THREAD_PRIORITY = 10;
Query OK, 0 rows affected, 1 warning (0.18 sec)

mysql> SHOW WARNINGS;
+---------+------+-------------------------------------------------------------+
| Level   | Code | Message                                                     |
+---------+------+-------------------------------------------------------------+
| Warning | 4560 | Attribute thread_priority is ignored (using default value). |
+---------+------+-------------------------------------------------------------+
  • 在Linux上,除非設(shè)置了CAP_SYS_NICE功能,否則資源組線程優(yōu)先級將被忽略。向進(jìn)程授予CAP_SYS_NICE功能將啟用一系列特權(quán);咨詢http://man7.org/linux/man-pages/man7/capabilities.7.html查看完整列表。啟用此功能時請小心。

在使用systemd和內(nèi)核支持Ambient Capabilities(Linux 4.3或更新版本)的Linux平臺上,建議啟用CAP_SYS_NICE功能的方法是修改MySQL服務(wù)文件并保持mysqld二進(jìn)制文件不變。要調(diào)整MySQL的服務(wù)文件,請使用以下過程:

(1)為您的平臺運(yùn)行適當(dāng)?shù)拿睿?/h3>

a, Oracle Linux、Red Hat和Fedora系統(tǒng):

$> sudo systemctl edit mysqld

b. SUSE、Ubuntu和Debian系統(tǒng):

$> sudo systemctl edit mysql

(2)使用編輯器,將以下文本添加到服務(wù)文件中:

[Service]
AmbientCapabilities=CAP_SYS_NICE

(3)重新啟動MySQL服務(wù)

如果不能像剛才描述的那樣啟用CAP_SYS_NICE功能,可以使用setcap命令手動設(shè)置它,指定mysqld可執(zhí)行文件的路徑名(這需要sudo訪問權(quán)限)。您可以使用getcap檢查功能。例如:

$> sudo setcap cap_sys_nice+ep /path/to/mysqld
$> getcap /path/to/mysqld
/path/to/mysqld = cap_sys_nice+ep

作為一項安全措施,將mysqld二進(jìn)制文件的執(zhí)行限制為root用戶和具有mysql組成員身份的用戶:

$> sudo chown root:mysql /path/to/mysqld
$> sudo chmod 0750 /path/to/mysqld

如果需要手動使用setcap,則必須在每次重新安裝后進(jìn)行。

在Windows上,線程以五個線程優(yōu)先級之一運(yùn)行。資源組線程優(yōu)先級范圍-20到19映射到下表所示的級別。

到此這篇關(guān)于詳解MySQL資源組的使用方法的文章就介紹到這了,更多相關(guān)MySQL資源組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • MySQL8.0就地升級到MySQL8.4.0的方法

    MySQL8.0就地升級到MySQL8.4.0的方法

    本文主要介紹了MySQL8.0就地升級到MySQL8.4.0的方法,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Mysql查詢語句執(zhí)行過程及運(yùn)行原理分析

    Mysql查詢語句執(zhí)行過程及運(yùn)行原理分析

    這篇文章主要介紹了Mysql查詢語句執(zhí)行過程及運(yùn)行原理分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL曝中間人攻擊Riddle漏洞可致用戶名密碼泄露的處理方法

    MySQL曝中間人攻擊Riddle漏洞可致用戶名密碼泄露的處理方法

    Riddle漏洞存在于DBMS Oracle MySQL中,攻擊者可以利用漏洞和中間人身份竊取用戶名和密碼。下面小編給大家?guī)砹薓ySQL曝中間人攻擊Riddle漏洞可致用戶名密碼泄露的處理方法,需要的朋友參考下吧
    2018-01-01
  • mysql查詢字符串替換語句小結(jié)(數(shù)據(jù)庫字符串替換)

    mysql查詢字符串替換語句小結(jié)(數(shù)據(jù)庫字符串替換)

    有時候我們需要對mysql的字符串進(jìn)行替換,我們就可以通過sql語句直接實現(xiàn)了,不過對于大數(shù)據(jù)量的字段不建議使用此方法
    2012-07-07
  • MySQL數(shù)據(jù)庫學(xué)習(xí)之去重與連接查詢詳解

    MySQL數(shù)據(jù)庫學(xué)習(xí)之去重與連接查詢詳解

    這篇文章主要為大家詳細(xì)介紹一下MySQL數(shù)據(jù)庫中去重與連接查詢的使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-07-07
  • MySQL中索引失效的常見場景與規(guī)避方法

    MySQL中索引失效的常見場景與規(guī)避方法

    這篇文章主要給大家介紹了關(guān)于MySQL中索引失效的常見場景與規(guī)避的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • mysql 使用B+樹索引有哪些優(yōu)勢

    mysql 使用B+樹索引有哪些優(yōu)勢

    這篇文章主要介紹了mysql 使用B+樹索引有哪些優(yōu)勢,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • MySQL字符之char、varchar類型簡析

    MySQL字符之char、varchar類型簡析

    varchar和char是MySQL中的兩種數(shù)據(jù)類型,都是用來存儲字符串的,下面這篇文章主要給大家介紹了關(guān)于MySQL字符之char、varchar類型的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • mysql 一次向表中插入多條數(shù)據(jù)實例講解

    mysql 一次向表中插入多條數(shù)據(jù)實例講解

    這篇文章主要介紹了mysql 一次向表中插入多條數(shù)據(jù)實例講解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MySQL視圖中如何使用IF和CASE語句

    MySQL視圖中如何使用IF和CASE語句

    這篇文章主要介紹了MySQL視圖中如何使用IF和CASE語句問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論