网站是怎么搭建的,小的外贸公司值得去吗,做网站用哪个软件写比较好,网站开发设计师的工作MySQL支持创建和管理资源组#xff0c;并允许将服务器内运行的线程分配给特定的组#xff0c;以便线程根据组可用的资源执行。组属性允许控制其资源#xff0c;以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。
目前#xff0c;CPU时间是一…MySQL支持创建和管理资源组并允许将服务器内运行的线程分配给特定的组以便线程根据组可用的资源执行。组属性允许控制其资源以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。
目前CPU时间是一种可管理的资源以“虚拟CPU”的概念表示该概念包括CPU核心、超线程、硬件线程等。服务器在启动时确定有多少虚拟CPU可用具有适当权限的数据库管理员可以将这些CPU与资源组相关联并将线程分配给组。
例如为了管理不需要以高优先级执行的批处理作业的执行DBA可以创建一个批处理资源组并根据服务器的繁忙程度调整其优先级。可以启用或禁用组来控制线程是否可分配给它们。
以下部分描述了MySQL中资源组使用的各个方面
1 资源组元素
这些功能为MySQL中的资源组管理提供了SQL接口
SQL语句允许创建、更改和删除资源组并允许将线程分配给资源组。优化器提示允许将单个语句分配给资源组。资源组权限提供对哪些用户可以执行资源组操作的控制。信息架构RESOURCE_GROUPS表显示有关资源组定义的信息性能架构线程表显示每个线程的资源组分配。状态变量提供每个管理SQL语句的执行计数。
2 资源组属性
资源组具有定义该组的属性。所有属性都可以在组创建时设置。某些属性在创建时是固定的其他可以在此后的任何时间进行修改。
这些属性是在创建资源组时定义的不能修改
每个组都有一个名称。资源组名称是类似于表和列名的标识符除非它们包含特殊字符或是保留字否则不需要在SQL语句中引用。组名不区分大小写最长可达64个字符。每个组都有一个类型即SYSTEM或USER。资源组类型影响可分配给该组的优先级值的范围如后所述。该属性以及允许优先级的差异使系统线程能够被识别从而保护它们免受用户线程对CPU资源的争用。
系统和用户线程对应于性能模式线程表中列出的后台和前台线程。
这些属性是在资源组创建时定义的此后可以随时修改
CPU相关性是资源组可以使用的一组虚拟CPU。亲和性可以是可用CPU的任何非空子集。如果一个组没有关联它可以使用所有可用的CPU。线程优先级是分配给资源组的线程的执行优先级。优先级值的范围从-20最高优先级到19最低优先级。系统组和用户组的默认优先级均为0。 允许系统组的优先级高于用户组确保用户线程的优先级永远不会高于系统线程 1对于系统资源组允许的优先级范围为-20到0。 2对于用户资源组允许的优先级范围为0到19。
每个组都可以启用或禁用使管理员能够控制线程分配。线程只能分配给已启用的组。
3 资源组管理
默认情况下有一个系统组和一个用户组分别命名为SYS_default和USR_default。不能删除这些默认组也不能修改它们的属性。每个默认组都没有CPU相关性优先级为0。
新创建的系统线程和用户线程分别分配给SYS_default和USR_default组。
对于用户定义的资源组所有属性都在组创建时指定。创建组后可以修改其属性但名称和类型属性除外。
要创建和管理用户定义的资源组请使用以下SQL语句
CREATE RESOURCE GROUP创建一个新组。ALTER RESOURCE GROUP修改现有组。DROP RESOURCE GROUP删除现有组。
这些语句需要RESOURCE_GROUP_ADMIN权限。
要管理资源组分配请使用以下功能
SET RESOURCE GROUP将线程分配给一个组。RESOURCE_GROUP优化器提示将单个语句分配给一个组。
这些操作需要RESOURCE_GROUP_ADMIN或RESOURCE-GROUP_USER权限。
资源组定义存储在Resource_groups数据字典表中以便组在服务器重新启动时保持不变。因为resource_groups是数据字典的一部分所以用户无法直接访问它。使用信息模式Resource_GROUPS表可以获得资源组信息该表被实现为数据字典表上的视图。
最初RESOURCE_GROUPS表中有以下行描述默认组
mysql SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS\G
*************************** 1. row ***************************RESOURCE_GROUP_NAME: USR_defaultRESOURCE_GROUP_TYPE: USER
RESOURCE_GROUP_ENABLED: 1VCPU_IDS: 0-3THREAD_PRIORITY: 0
*************************** 2. row ***************************RESOURCE_GROUP_NAME: SYS_defaultRESOURCE_GROUP_TYPE: SYSTEM
RESOURCE_GROUP_ENABLED: 1VCPU_IDS: 0-3THREAD_PRIORITY: 0
THREAD_PRIORITY值为0表示默认优先级。VCPU_IDS值显示了包括所有可用CPU的范围。对于默认组显示的值因MySQL服务器运行的系统而异。
前面的讨论提到了一个场景该场景涉及一个名为Batch的资源组来管理不需要高优先级执行的批处理作业的执行。要创建这样一个组请使用类似以下的语句
CREATE RESOURCE GROUP BatchTYPE USERVCPU 2-3 -- assumes a system with at least 4 CPUsTHREAD_PRIORITY 10;
要验证资源组是否按预期创建请检查resource_GROUPS表
mysql SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPSWHERE RESOURCE_GROUP_NAME Batch\G
*************************** 1. row ***************************RESOURCE_GROUP_NAME: BatchRESOURCE_GROUP_TYPE: USER
RESOURCE_GROUP_ENABLED: 1VCPU_IDS: 2-3THREAD_PRIORITY: 10
如果THREAD_PRIORITY值为0而不是10请检查您的平台或系统配置是否限制了资源组功能请参阅资源组限制。
要将线程分配给批处理组请执行以下操作
SET RESOURCE GROUP Batch FOR thread_id;
此后命名线程中的语句将使用批处理组资源执行。
如果会话自己的当前线程应该在Batch组中请在会话中执行以下语句
SET RESOURCE GROUP Batch;
此后会话中的语句将使用批处理组资源执行。
要使用Batch组执行单个语句请使用RESOURCE_group优化器提示
INSERT /* RESOURCE_GROUP(Batch) */ INTO t2 VALUES(2);
分配给批处理组的线程使用其资源执行可以根据需要进行修改
当系统负载很高时减少分配给该组的CPU数量降低其优先级或者如图所示两者兼有
ALTER RESOURCE GROUP BatchVCPU 3THREAD_PRIORITY 19;
在系统负载较轻的情况下增加分配给组的CPU数量提高其优先级或如图所示两者兼有
ALTER RESOURCE GROUP BatchVCPU 0-3THREAD_PRIORITY 0;
4 资源组复制
资源组管理是发生该管理的服务器的本地管理。资源组SQL语句和对Resource_groups数据字典表的修改不会写入二进制日志也不会被复制。
5 资源组限制
在某些平台或MySQL服务器配置上资源组不可用或有限制
如果安装了线程池插件则资源组不可用。
资源组在macOS上不可用macOS不提供将CPU绑定到线程的API。
在FreeBSD和Solaris上资源组线程优先级被忽略。实际上所有线程都以优先级0运行。尝试更改优先级会导致警告
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上除非设置了CAP_SYS_NICE功能否则资源组线程优先级将被忽略。向进程授予CAP_SYS_NICE功能将启用一系列特权咨询http://man7.org/linux/man-pages/man7/capabilities.7.html查看完整列表。启用此功能时请小心。
在使用systemd和内核支持Ambient CapabilitiesLinux 4.3或更新版本的Linux平台上建议启用CAP_SYS_NICE功能的方法是修改MySQL服务文件并保持mysqld二进制文件不变。要调整MySQL的服务文件请使用以下过程
1为您的平台运行适当的命令 a, Oracle Linux、Red Hat和Fedora系统
$ sudo systemctl edit mysqld b. SUSE、Ubuntu和Debian系统
$ sudo systemctl edit mysql
2使用编辑器将以下文本添加到服务文件中
[Service]
AmbientCapabilitiesCAP_SYS_NICE
3重新启动MySQL服务
如果不能像刚才描述的那样启用CAP_SYS_NICE功能可以使用setcap命令手动设置它指定mysqld可执行文件的路径名这需要sudo访问权限。您可以使用getcap检查功能。例如
$ sudo setcap cap_sys_niceep /path/to/mysqld
$ getcap /path/to/mysqld
/path/to/mysqld cap_sys_niceep
作为一项安全措施将mysqld二进制文件的执行限制为root用户和具有mysql组成员身份的用户
$ sudo chown root:mysql /path/to/mysqld
$ sudo chmod 0750 /path/to/mysqld
如果需要手动使用setcap则必须在每次重新安装后进行。
在Windows上线程以五个线程优先级之一运行。资源组线程优先级范围-20到19映射到下表所示的级别。