作为一个分布式MPP数据库,ClustrixDB能够利用多个节点和核心来比单节点数据库更快地处理查询。有两个可调进程可以促进这一点。

Clustrix选择了一组默认参数来控制那些提供最常见工作负载的进程。根据您的特定工作负载、集群规范和应用程序的延迟需求,您可能希望调优其中一些变量。

Fair Scheduler

ClustrixDB公平调度器可以确保长时间运行的查询不独占CPU资源。它通过优先查询返回少行之前的查询返回的行数更大。这有助于平衡工作负载在节点和集群尤其有用,混合长期在线分析处理(OLAP)和短期的联机事务处理(OLTP)。公平调度器将优先考虑任何查询读取100(默认)或更少的行之前,任何正在运行的查询处理超过100行。全局变量gtm_schedule_til_batch_rows用于控制阈值的行。

如果没有公平调度程序,长时间运行的查询可能会占用CPU资源,并为较小的查询带来不必要的延迟。例如,如果一个较短的查询被分配给一个已经在执行长时间运行的查询的cpu核心,那么这个较短的查询将会经历意外的延迟。公平调度程序通过平衡长时间运行和短时间运行的查询之间的资源来解决这个问题。与长时间运行的查询相比,短时间运行的查询具有更高的查询延迟。

全局变量

以下全局变量控制公平调度程序。这些变量在会话中不可用。

Name

Description

Default Value

gtm_schedule_til 是否开启fair scheduler true
gtm_schedule_til_batch_rows

在重新调度之前要处理的行。

100

检查fair scheduler程序的影响

当查询正在运行时,您可以看到系统中fair scheduler程序的影响。在查询完成后,query.log将包含关于CPU等待的统计信息。

query.log

log中的cpu_wait和cpu_waittime_ns统计信息显示查询何时在等待CPU资源,这可能是由于公平调度程序取消了优先级。一旦查询完成,就会被记录到query.log中。

例如,您可以看到公平调度程序对这个查询进行了45,752次反优先级处理,总共花费了21,975,562,278纳秒(21秒)。

2017-03-01 16:49:01.530435 UTC ip-10-10-10-101 clxnode: INSTR SLOW SID:297145363 db=production user=production@10.10.10.254  
ac=Y xid=58c4dbf59b223826 sql="UPDATE event_activities SET is_processed = true where batch_id = '1488386700'" [Ok: 91275 rows updated]
time 9303.1ms; reads: 91276; inserts: 0; deletes: 0; updates: 182550; counts: 91275; rows_read: 182550; forwards: 365101; broadcasts: 0;
rows_output: 2; semaphore_matches: 0; fragment_executions: 365102; runtime_ns: 22744490156; cpu_waits: 45752; cpu_waittime_ns: 21975562278;
bm_fixes: 592280; bm_loads: 0; bm_waittime_ns: 0; lockman_waits: 1; lockman_waittime_ms: 6844; trxstate_waits: 0; trxstate_waittime_ms: 0;
wal_perm_waittime_ms: 0; bm_perm_waittime_ms: 0; sigmas: 0; sigma_fallbacks: 0; row_count: 91275; found_rows: -1; insert_id: 0; fanout: no;
attempts: 1  

system.transactions

这个system.transactions表显示了同一查询在运行时的信息:

sql> select xid, cpu, cpu_waits, cpu_waittime_ns from transactions where xid = ;
+---------------------+------+-----------+-----------------+
| xid | cpu | cpu_waits | cpu_waittime_ns |
+---------------------+------+-----------+-----------------+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
+---------------------+------+-----------+-----------------+
rows in set (0.00 sec)

Fanout

Fanout是在每个节点的多个cpu上同时运行查询片段的过程。这允许扩展并行性,并缩短ALTER TABLE和大型OLAP查询的执行时间。

ClustrixDB能够使用多个cpu进行查询处理和ALTER TABLE之类的操作,这个过程叫做 Fanout。

当ClustrixDB执行一个查询时,它被分割成片段以供执行。然后将这些片段传递给各个cpu执行。根据查询类型和复杂性,每个片段可以有多个执行阶段。

Fanout是在每个节点的多个cpu上同时运行查询片段的过程。这允许扩展并行性,并缩短ALTER TABLE和大型OLAP查询的执行时间。

有关查询执行和碎片的详细信息可以在ClustrixDB评估模型的文档中找到。

控制Fanout的变量

Fanout由以下变量控制和配置。默认值适用于大多数工作负载。

Name Description Default Value Session Variable

Fanout Variables

query_fanout Enables query fanout. This takes precedence over all other fanout variables. True

query_fanout_insert_select

If enabled, INSERT INTO ... SELECT FROM ... queries will use Fanout. This takes precedence over query_fanout_all_writes.

True

query_fanout_all_writes Enable fanout for INSERT, UPDATE, and DELETE queries. Order of writes is not guaranteed. False

query_fanout_min_rows Only queries expected to read more than this many rows will fan out. 5000

Related Variables

gtm_schedule_til Enable the Completely Fair Scheduler. True
sigma_skiplist Enable skiplist containers for aggregates and sorting. False

禁用Fanout

这将完全禁用Fanout,每个查询只使用一个CPU。这将影响性能,只有在Clustrix支持建议的情况下才应该更改此设置。

sql> SET query_fanout = FALSE; 

表切片的最佳Fanout准则

要使用Fanout提供完全的并行性,请确保查询的表示具有足够的片。预期将从扇出中受益的大型表应该被分割到集群许可的CPU内核总数中。Under-slicing减少并行性。例如,如果一个节点上有三个表示片段,那么Fanout最多只能在该节点的三个cpu上运行三个查询片段。

Fanout警告

临时表不提供Fanout。临时表只包含一个片,并且只驻留在一个节点上。

18. ClustrixDB 管理CPU资源的更多相关文章

  1. 用 cgroups 管理 cpu 资源

    转自:http://xiezhenye.com/2013/10/用-cgroups-管理-cpu-资源.html 这回说说怎样通过 cgroups 来管理 cpu 资源.先说控制进程的 cpu 使用. ...

  2. Docker CPU 资源限制——CPU分片功能测试

    之前的一篇随笔——Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...

  3. 控制 Memory 和 CPU 资源的使用

    Resource Governor的出现,解决了在一台SQL Server实例上,管理多用户工作负载和资源隔离的需求,它允许管理员限制系统处理Requsts时所耗费的CPU 和 Memory资源的数量 ...

  4. 火狐浏览器无故卡死,未响应或者占大量cpu资源解决方案

    这是火狐社区的文章,对火狐浏览器无故卡死,未响应或者占大量cpu资源有详细的说明和解决,记录下!!! ++++++++++++++++++++++++++++++++ Firefox 挂起 如果您的 ...

  5. 汇编语言--CPU资源和存储器(二)

    二.CPU资源和存储器 需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口. 1.寄存器组 (1)16位寄存器组 16位CPU所含有的寄存器有(见图2.1中16位寄存器部分): 4个数据寄存 ...

  6. 内存和CPU资源控制

    数据库系统的资源是指内存和CPU(处理器)资源,拥有资源的多寡,决定了数据查询的性能.当一个SQL Server实例上,拥有多个独立的工作负载(workload)时,使用资源管理器(Resource ...

  7. oracle12c之三 控制PDB中CPU 资源使用

      CPU资源隔离 数据库中,不同的PDB对主机CPU资源使用要求不同,那么我们就可以使用CDB resourceplans来管理不同pdb对CPU资源的使用. CDB Resource Plans ...

  8. nginx 性能优化的概述及在CPU资源方面的处理

    nginx的性能优化的概述 软件层面的提升硬件的使用率 增大CPU的利用率 增大内存的利用率 增大磁盘IO利用率 增大网络带宽利用率 提升硬件规格 网卡:万兆网卡.例如10G.25G.40G等 磁盘: ...

  9. docker19.03限制容器使用的cpu资源

    一,用--cpus限制可用的cpu个数 例子: [root@localhost liuhongdi]# docker run -idt --name kafka1 --hostname kafka1 ...

随机推荐

  1. cocos2dx[3.2](8) 数学类Vec2/Size/Rect

    数学类Vec2.Size.Rect,是cocos2dx中比较常用的类. 比如设置图片位置,设置图片大小,两图片的碰撞检测等等. 比起2.x版本,在3.x中本质上其实没有太大的变化,主要的变化就是将全局 ...

  2. ajax的post请求crsftoken提交

  3. python 三元运算、列表推倒式、字典推倒式、生成器生成式

    1.三元运算 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推倒式 #1.示例 egg_ ...

  4. poj2773(欧基里德算法 或 二分+容斥)

    题目链接:https://vjudge.net/problem/POJ-2773 题意:给定m,k,求与m互质的第k个数. 思路一:利用gcd(a,b)=gcd(b*t+a,b)知道,与m互质的数是以 ...

  5. cell_phone_network(树形dp求最小支配集)

    Cell Phone Network Farmer John has decided to give each of his cows a cell phone in hopes to encoura ...

  6. Tomcat配置:java.lang.UnsatisfiedLinkError: D:\DevelopTool\tool20150402\tomcat\apache-tomcat-8.5.16\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform

    解决办法: tomcat启动时提示java.lang.UnsatisfiedLinkError: D:\soft\devTool\apache-tomcat-7.0.57\bin\tcnative-1 ...

  7. DataLinkLayer(数据链路层)

    DataLinkLayer(数据链路层) The Reference Model(参考模型) layer name 5 Application layer 4 TransPort layer 3 Ne ...

  8. HDU-5201 The Monkey King

    题目描述 \(m\)个猴子分\(n\)个桃,要求第一个猴子的桃数严格大于其他猴子,问有多少种分法对\(1e9+7取模(\%1e9+7)\) Input \(1≤T≤25 ,1≤n,m≤100000\) ...

  9. [TJOI2019] 甲苯先生的线段树

    臭名昭著的巧合:CF750G 题意:在无限深度的一颗线段树中询问编号和为S的简单路径条数. 题解传送门 这道题相当于在原来基础上多了询问两点间简单路径的编号的的问题. 直觉告诉我们只需要求出两点在线段 ...

  10. python-day25(正式学习)

    目录 组合 多态 多态性 好处 封装 两个层面 property 组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象 组合是用来解决类与类之间代码冗余的问题 首先我们先写一个 ...