ITPub博客

首页 > 数据库 > > 优先级控制-IO优先级

优先级控制-IO优先级

作者:GaussDB_数据库 时间:2020-01-14 16:05:20 0 删除 编辑

背景信息

通过IO资源管理设置了使用上限,系统还支持对IO的优先级进行限制。在磁盘使用率达到90以上时,会触发IO优先级模式,优先级通过io_priority指定。io_priority提供三种优先级,分别是High、Medium及Low,分别对应限制iops为重消耗IO作业原始触发数值的80%、50%及20%。

系统支持的优先限制类型如表1所示。

表1 IO优先级限制类型

IO优先级限制方式

说明

资源池级别IO优先级限制

通过设置资源池的参数“io_priority”,可以对用户级别的IO优先级进行限制。

作业级别IO优先级限制

通过设置GUC参数“io_priority”,可以对会话级别的IO优先级进行限制。

IO优先级限制场景如表2所示

表2 IO资源上限限制的场景

IO读写模式

说明

写模式

对“INSERT INTO SELECT”,“COPY FROM”,“CREATE TABLE AS” 语句进行控制。

读模式

需要根据优化器的评估计算出要扫描的数据量,通常单DN数据量大约超过500MB时就会触发IO控制。

读写混合模式

“UPDATE”、“DELETE”、“VACUUM FULL”、“CREATE INDEX”、“CLUSTER TABLE USING INDEX”、“ANALYZE”、“MERGE INTO”作为读写混合的场景,也会触发IO的控制。

 说明:

对于行存,由于缓冲区策略,读写IO请求并不在真正读写磁盘过程中控制,而是在读写缓冲区过程中控制。

前提条件

已熟悉gs_guc和ALTER RESOURCE POOL的使用。

操作步骤

用户级IO优先级限制

  1. 使用gsql连接数据库。
  2. 修改资源池“resource_pool_a1”的IO优先级为Medium。
    ALTER RESOURCE POOL resource_pool_a1 WITH (io_priority="Medium");
    ALTER RESOURCE POOL

会话级IO优先级限制

设置GUC参数io_priority的取值为Medium。

SET io_priority TO Medium;
查看IO优先级的配置信息
  • 查看用户级别的IO优先级设置
    select * from pg_resource_pool;
    respool_name   | mem_percent | cpu_affinity |    control_group    | active_statements | max_dop | memory_limit | parentid | io_limits | io_priority
    ------------------+-------------+--------------+---------------------+-------------------+---------+--------------+----------+-----------+-------------
    default_pool | 100 | -1 | DefaultClass:Medium | -1 | 1 | 8GB | | 0 | None
    resource_pool_a1 | 20 | -1 | class_a:workload_a1 | 10 | 1 | 8GB | 16957 | | Medium
    (2 rows)
  • 查看会话级IO优先级设置
    show io_priority ;
    io_priority
    -------------
    Medium
    (1 row)

查看IO资源管理相关视图

  • pg_session_iostat提供session级IO资源监控
    select * from pg_session_iostat;
  • pg_user_iostat提供user级IO资源监控
    select * from pg_user_iostat('username');

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3124065/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19278