作为一个分布式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. Logistic回归实战篇之预测病马死亡率

    利用sklearn.linear_model.LogisticRegression训练和测试算法. 示例代码: import numpy as np import matplotlib.pyplot ...

  2. java中enum----枚举的学习(更新中)

    package com.hdmaxfun; import java.util.Scanner; import com.icpc.Icpm; import java.util.HashMap; impo ...

  3. Python 正则匹配网页内的IP地址及端口号

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2017-08-30 20:38:23 # @Author : EnderZhou (z ...

  4. poj1220(短除法实现任意进制转换)

    题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...

  5. etcd集群添加节点

    查看当前集群节点信息 # etcdctl member list --write-out=table +------------------+---------+------------------- ...

  6. Solr 4.4.0利用dataimporthandler导入本地pdf、word等文档

    1. 创建本地目录 $ mkdir /usr/local/contentplatform/solr/solr/core1/file1 $ ls -lh total 88M -rw-r--r-- tnu ...

  7. Windows Forms和WPF在Net Core 3.0框架下并不会支持跨平台

    Windows Forms和WPF在Net Core 3.0框架下并不会支持跨平台 微软将WinForms和WPF带到.NET Core 3.0这一事实,相信大家都有所了解,这是否意味着它在Linux ...

  8. Tomcat使用时出现的问题总结

    1.有两种办法解决Tomcat启动时端口号冲突问题 1.第一种: 查看本地端口使用情况,找到被占用的8080端口,杀死该进程 1.查看本地端口命令:cmd->netstat -ano 2.找到 ...

  9. Maven build 命令介绍(转)

    常用命令: 打包:mvn package编译:mvn compile清空:mvn clean(清除编译后目录,默认是target目录)运行测试:mvn test安装jar包到本地仓库中:mvn ins ...

  10. java springmvc poi 导出Excel,先简单记录,后期会详细描写

    POI jar包下载 : http://poi.apache.org/download.html jsp代码 <%@ page language="java" content ...