searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MYSQL8与TiDB资源管控功能对比

2024-09-05 09:26:33
3
0

MYSQL8与TiDB资源管控功能对比

CPU资源分组管理

  1. 需要创建资源组,为每个资源组分配适当的CPU核心数量或者是vCPU (cat /proc/cpuinfo)
  2. 将资源组分配给正在运行查询的线程ID
    资源组:资源组包括名称,类型,分配的CPU核心,以及优先顺序。创建资源组时,使用SQL执行CREATE RESOURCE GROUP:
create resource group RU1 type=user vcpu=2-3 thread_priority=5;

资源组的类型分为user和system,system的优先顺序要高于user,system的优先范围在-20到0之间,user的范围在0到19。

通过系统表INFORMATION_SCHEMA.RESOURCE_GROUPS查看信息

SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS;
+---------------------+---------------------+------------------------+--------------------+-----------------+
| RESOURCE_GROUP_NAME | RESOURCE_GROUP_TYPE | RESOURCE_GROUP_ENABLED | VCPU_IDS           | THREAD_PRIORITY |
+---------------------+---------------------+------------------------+--------------------+-----------------+
| USR_default         | USER                |                      1 | 0x302D39           |               0 |
| SYS_default         | SYSTEM              |                      1 | 0x302D39           |               0 |
| RU1                 | USER                |                      1 | 0x322D33           |               0 |
+---------------------+---------------------+------------------------+--------------------+-----------------+

performance_schema.threads表中查询thread_id,通过ID将线程绑定到资源组

SET RESOURCE GROUP RU1 FOR thread_id;

或者直接将会话绑定到资源组

SET RESOURCE GROUP RU1;

使用Hint直接将语句绑定到资源组

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

把系统的接口封装成 SQL 语句提供给用户,底层的实现通过系统 API 给线程直接绑定 CPU

与TiDB资源管控异同

  • 使用资源组管理进行资源管理
  • 使用SQL语句操作
  • TiDB使用独特的RU对资源进行抽象,Mysql直接使用cpu核心编号
  • TiDB使用令牌桶算法,Mysql使用操作系统的线程调度
  • TiDB关注cpu+IO,可扩展,Mysql只能关注cpu,且难以扩展
  • Mysql在系统级别操作cpu资源,更灵活,TiDB只在服务中提供
0条评论
0 / 1000
LGROTS
4文章数
0粉丝数
LGROTS
4 文章 | 0 粉丝
原创

MYSQL8与TiDB资源管控功能对比

2024-09-05 09:26:33
3
0

MYSQL8与TiDB资源管控功能对比

CPU资源分组管理

  1. 需要创建资源组,为每个资源组分配适当的CPU核心数量或者是vCPU (cat /proc/cpuinfo)
  2. 将资源组分配给正在运行查询的线程ID
    资源组:资源组包括名称,类型,分配的CPU核心,以及优先顺序。创建资源组时,使用SQL执行CREATE RESOURCE GROUP:
create resource group RU1 type=user vcpu=2-3 thread_priority=5;

资源组的类型分为user和system,system的优先顺序要高于user,system的优先范围在-20到0之间,user的范围在0到19。

通过系统表INFORMATION_SCHEMA.RESOURCE_GROUPS查看信息

SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS;
+---------------------+---------------------+------------------------+--------------------+-----------------+
| RESOURCE_GROUP_NAME | RESOURCE_GROUP_TYPE | RESOURCE_GROUP_ENABLED | VCPU_IDS           | THREAD_PRIORITY |
+---------------------+---------------------+------------------------+--------------------+-----------------+
| USR_default         | USER                |                      1 | 0x302D39           |               0 |
| SYS_default         | SYSTEM              |                      1 | 0x302D39           |               0 |
| RU1                 | USER                |                      1 | 0x322D33           |               0 |
+---------------------+---------------------+------------------------+--------------------+-----------------+

performance_schema.threads表中查询thread_id,通过ID将线程绑定到资源组

SET RESOURCE GROUP RU1 FOR thread_id;

或者直接将会话绑定到资源组

SET RESOURCE GROUP RU1;

使用Hint直接将语句绑定到资源组

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

把系统的接口封装成 SQL 语句提供给用户,底层的实现通过系统 API 给线程直接绑定 CPU

与TiDB资源管控异同

  • 使用资源组管理进行资源管理
  • 使用SQL语句操作
  • TiDB使用独特的RU对资源进行抽象,Mysql直接使用cpu核心编号
  • TiDB使用令牌桶算法,Mysql使用操作系统的线程调度
  • TiDB关注cpu+IO,可扩展,Mysql只能关注cpu,且难以扩展
  • Mysql在系统级别操作cpu资源,更灵活,TiDB只在服务中提供
文章来自个人专栏
数据库调优
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0