1. 程式人生 > >MySQL · 特性分析 · MySQL 8.0 資源組 (Resource Groups)

MySQL · 特性分析 · MySQL 8.0 資源組 (Resource Groups)

MySQL 8.0已經正式釋出。這個版本包含很多有意思的特性,例如,更快、效能更好的Schema和Information Schema、原子DDL、UNDO空間回收等,在很多的網站,部落格等上面都有大量的推廣介紹。本文將要介紹的一個很有用的特性,資源組,反而沒有得到充分的宣傳。如果沒有特別的說明,本文的例子針對的是Linux系統。

什麼是資源組

大家知道,MySQL例項裡面包含系統的後臺執行緒,例如Master Thread、IO Thread, Purge Thread等,也有處理使用者請求的前臺執行緒,在MySQL 8.0之前,所有的執行緒都是同等優先順序的,官方的版本是不可以修改執行緒的優先順序的,也沒法將執行緒繫結到特定的cpu核上。在某些業務場景下,我們希望可以來做干涉,例如,白天業務高峰的時候,讓使用者執行緒的優先順序更高,而到晚上做批量處理的時候,讓負責批量處理的執行緒優先順序更高,等等,另外,也希望可以給特定的執行緒來繫結cpu核,來保證服務質量等…

使用MySQL 8.0資源組這個特性就可以很方便的滿足這些需求,要做的就是通過CREATE RESORUCE GROUP命令建立一個資源組,在這個DDL語句裡面指定這個的型別(USER 或者 SYSTEM型別),優先順序 (-20..0 for SYSTEM 型別執行緒, 0..19 for USER型別執行緒,數字越小優先順序越高),以及可以使用的VCPU(邏輯CPU)的編號。之後,再使用SET RESOURCE GROUP語句將thread指派到某個組裡面即可。

注: 系統可用的VCPU編號可以通過cat cat /proc/cpuinfo命令檢視,processor欄位就是對應的VCPU的編號;在沒有開啟超執行緒的情況下,邏輯CPU個數 = 物理CPU個數 * CPU核心數。

資源組使用方法與示例

我們來看幾個例子,

  • 建立一個叫sql_thread的資源組,將編號0和3的邏輯CPU指定到這個組,並將這個組的優先順序設為最高 (THREAD_PRIORITY值越小,優先順序越高,-20是最小的值)。
CREATE RESOURCE GROUP sql_thread
    TYPE = USER
    VCPU = 1,3
    THREAD_PRIORITY = -20
  • 將某個活動的MySQL Thread指派到sql_thread資源組中,Thread的id值需要查詢Performance_Schema.threads的Thread_Id欄位,目前Show Processlist命令的輸出還不直接可以看到。
    SET
    RESOURCE GROUP sql_thread FOR 10
  • 修改資源組sql_thread繫結的邏輯CPU為編號5,6,並降低優先順序到-5。
ALTER RESOURCE GROUP sql_thread VCPU = 5, 6 THREAD_PRIORITY = -5;

SYSTEM型別的Threads預設使用的是SYS_default資源組,USER型別的Threads預設使用的是USER_default資源組。看看這兩種資源組的屬性,沒有繫結邏輯CPU,預設優先順序都是0,見下面的輸出 (例子環境下的邏輯CPU有24個,全部都可以使用)。

原文連結

相關推薦

MySQL · 特性分析 · MySQL 8.0 資源 (Resource Groups)

MySQL 8.0已經正式釋出。這個版本包含很多有意思的特性,例如,更快、效能更好的Schema和Information Schema、原子DDL、UNDO空間回收等,在很多的網站,部落格等上面都有大量的推廣介紹。本文將要介紹的一個很有用的特性,資源組,反而沒有得到充分的宣傳

特性解讀 | MySQL 8.0 資源

原創作者: 楊濤濤    在MySQL 8.0 之前, 我們假設一下有一條爛SQL, mysq

mysql 官方源從8.0.3直接yum升級到8.0.4後無法啟動

dump 修復 tails tab com pre roc password not 服務器環境:centos7.4.14 問題:mysql無法正常啟動 查看日誌 2018-02-23T02:10:08.371209Z 0 [System] [MY-010116] /usr

MySQL Connector to J 8.0 Q&A

MySQL Connector/J JDBC Connection Q:Driver/Datasource Class Name A: ?低版本:com.mysql.jdbc.Driver ?高版本(5.7+):com.mysql.cj.jdbc.Driver? Q:Connection U

Mysql 5.7 & 8.0 -24章-儲存程式和檢視 (翻譯+理解)

文章目錄 24.3 使用觸發器 24.3.1 觸發器語法和示例 24.3 使用觸發器 觸發器是與表關聯的資料庫物件,並在表發生特定事件時啟用。觸發器的一些用途是執行對要插入表中的值的檢查,或者對更新中涉

Windows 下Mysql 手動升級到 8.0.13

下載Mysql安裝包 在mysql的官網1下載mysql8.0.13版本壓縮包 解除安裝Mysql服務 sc delete 需要管理員許可權 C:\WINDOWS\system32>sc de

MySQL資料庫驅動mysql-connector-java的8.0.9-rc版本連線MySQL資料庫

  之前我的MySQL資料庫驅動mysql-connector-java版本號為5.1.34,在升級成8.0.9-rc版本後,發現原來的連線方式報錯了。故在這裡記錄一下新版本的MySQL資料庫驅動的連線使用方式。   先貼出來以前舊版本(5.1.34)的連線方

Linux系統下 MySQL 5.7和8.0 版本安裝指南

一. 準備工作 1 刪除本地7中的mariadb: 檢視系統中是否已安裝 mariadb 服務: rpm -qa | grep mariadb 或 yum list installed | grep mariadb 如果已安裝則刪除 mariadb及其依賴的包: yum -y remove ma

MySQL資料庫常用語法(8.0.13)

建立資料庫: CREATE DATABASE xxx; # xxx為所要建立的資料庫名字 檢視已存在的資料庫: SHOW DATABASES; 選擇已知存在的資料庫: USE xxx; # xxx為要選擇的資料庫名字 注意: 使用之後不能對其他資料庫以

java連接mysql數據庫8.0以上版本過程中遇到的坑

per host ive may req 驅動 nav via forname 來自:https://blog.csdn.net/u013276277/article/details/80255468 首先,我居然不能用navicat客戶端連接上mysql8.0數據

MySQL 5.7和8.0效能測試

目錄 背景 前提 環境 測試 雙1模式下 0 2 模式下 結論 背景 測試mysql5.7和mysql8.0

Tomcat 原始碼分析 WebappClassLoader 分析 (基於8.0.5)

0. 疑惑 在剛接觸 Tomcat 中的ClassLoader時心中不免冒出的疑惑: "Tomcat 裡面是怎麼樣設計ClassLoader的, 這樣設計有什麼好處?"; 我們先把這個問題留著, 到最後在看 ! 1. Java 中 ClassLoader 類別 1. BootstrapC

MySQL 8.0.2復制新特性(翻譯)

ogl 防止 將不 地址 arc -- 等待 download 日誌 譯者:知數堂星耀隊 MySQL 8.0.2復制新特性 MySQL 8 正在變得原來越好,而且這也在我們MySQL復制研發團隊引起了一陣熱潮。我們一直致力於全面提升MySQL復制,通過引入新的和一些有趣

MySQL 8.0特性

MySQL8.0新特性一、MySQL 8.0中添加的功能1、新的系統字典表 整合了存儲有關數據庫對象信息的事務數據字典,所有的元數據都用InnoDB引擎進行存儲2、支持DDL 原子操作 InnoDB表的DDL支持事務完整性,要麽成功要麽回滾,將DDL操作回滾日誌寫入到data dictionary

來,看看MySQL 5.6, 5.7, 8.0的新特性

對於MySQL的歷史,相信很多人早已耳熟能詳,這裡就不要贅述。下面僅從產品特性的角度梳理其發展過程中的里程碑事件。 1995年,MySQL 1.0釋出,僅供內部使用。 1996年,MySQL 3.11.1釋出,直接跳過了MySQL 2.x版本。 1999年,MySQL AB公司成立。同年

MySQL 8.0特性--CTE(二)

上一篇介紹了CTE的基本用法,參考MySQL 8.0新特性--CTE(一),本篇再來介紹一下CTE Recurive遞迴。 1、什麼是CTE Recurive? A recursive common table expression is one having a subquery that refe

MySQL 8.0特性之Windows Function

MySQL8.0開始像Oracle一樣支援視窗函數了,先來跑個SQL,感受一下視窗函式的魅力。 mysql> create table numbers(val int); mysql> insert into numb

MySQL 8.0特性--invisible index

invisible index特點 預設建立的索引都是visible,如果需要invisible索引建立的時候需要指定invisible引數。 預設無法使用invisible index索引,需要開啟引數optimizer_switch='use_invisible_indexes=on'才能使用;

MySQL 8.0特性--Descending Indexes(六)

Descending Indexes降序索引 降序索引主要是用來減少排序,去除filesort的。 MySQL支援降序索引:索引定義中的DESC不再被忽略,而是按降序儲存鍵值。以前,索引可以以相反的順序掃描,但會影響效能。可以按前向順序掃描降序索引,效率更高。當最有效的掃描順序混合了某些列的升序和其他

MySQL 8.0特性--skip scan range access method(七)

先來個示例: mysql> CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1,&nbs