18. ClustrixDB 管理CPU资源
作为一个分布式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资源的更多相关文章
- 用 cgroups 管理 cpu 资源
转自:http://xiezhenye.com/2013/10/用-cgroups-管理-cpu-资源.html 这回说说怎样通过 cgroups 来管理 cpu 资源.先说控制进程的 cpu 使用. ...
- Docker CPU 资源限制——CPU分片功能测试
之前的一篇随笔——Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...
- 控制 Memory 和 CPU 资源的使用
Resource Governor的出现,解决了在一台SQL Server实例上,管理多用户工作负载和资源隔离的需求,它允许管理员限制系统处理Requsts时所耗费的CPU 和 Memory资源的数量 ...
- 火狐浏览器无故卡死,未响应或者占大量cpu资源解决方案
这是火狐社区的文章,对火狐浏览器无故卡死,未响应或者占大量cpu资源有详细的说明和解决,记录下!!! ++++++++++++++++++++++++++++++++ Firefox 挂起 如果您的 ...
- 汇编语言--CPU资源和存储器(二)
二.CPU资源和存储器 需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口. 1.寄存器组 (1)16位寄存器组 16位CPU所含有的寄存器有(见图2.1中16位寄存器部分): 4个数据寄存 ...
- 内存和CPU资源控制
数据库系统的资源是指内存和CPU(处理器)资源,拥有资源的多寡,决定了数据查询的性能.当一个SQL Server实例上,拥有多个独立的工作负载(workload)时,使用资源管理器(Resource ...
- oracle12c之三 控制PDB中CPU 资源使用
CPU资源隔离 数据库中,不同的PDB对主机CPU资源使用要求不同,那么我们就可以使用CDB resourceplans来管理不同pdb对CPU资源的使用. CDB Resource Plans ...
- nginx 性能优化的概述及在CPU资源方面的处理
nginx的性能优化的概述 软件层面的提升硬件的使用率 增大CPU的利用率 增大内存的利用率 增大磁盘IO利用率 增大网络带宽利用率 提升硬件规格 网卡:万兆网卡.例如10G.25G.40G等 磁盘: ...
- docker19.03限制容器使用的cpu资源
一,用--cpus限制可用的cpu个数 例子: [root@localhost liuhongdi]# docker run -idt --name kafka1 --hostname kafka1 ...
随机推荐
- cocos2dx基础篇(24) 场景切换效果CCTransitionScene
[3.x] (1)去掉 "CC" (2)卡牌翻转 TransitionFlip 中的样式 tOrientation // //1: kCCTransitionOri ...
- Java网络爬虫
一.前言 首先我们把准备工作做好:IDEA 2019.1.JDK1.8.Maven3.5 Jsoup的Maven依赖: <dependency> <groupId>org.js ...
- PERCONA-TOOLKIT 安装 使用
1.基于MySQL主从环境 可以参考https://www.cnblogs.com/xianglei_/p/12068241.html 上传rpm包 并安装 1 2 cd /usr/local/src ...
- [Python3] 032 常用模块 random
目录 random 1. random.random() 2. random.choice() 3. random.shuffle() 4. random.randint() 5. random.ra ...
- 【转】【mysql面试】https://blog.csdn.net/hanfazy/article/details/14520437
公司招聘MySQL DBA,也面试了10个2年MySQL DBA工作经验的朋友,谈谈自己的心得,欢迎大家指点. 1 2年MySQL DBA经验 其中许多有水分,一看到简历自我介绍,说公司项目的时 ...
- BATJ的常见java面试题
JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗,为什么. 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允 ...
- springBoot2.0配置profile
1. 使用yaml来配置,直接配置application.yml文件 server: port: 8888 spring: profiles: active: dev # 激活生产环境 --- # 测 ...
- Java Web开发技术教程入门-初识动态网页
这段时间学校搞了一个"阅战阅勇"的阅读活动,奖品还是挺丰富的~于是,奔着这些奖品,我去图书馆借了这本<Java Web开发技术教程>.一是为了那些丰富的奖品,二是为了回 ...
- CF Gym102028G Shortest Paths on Random Forests
传送门 这题要求的期望,就是总权值(所有不在同一个连通块点对的贡献+同一连通块点对的贡献)/总方案(森林个数) 先求森林个数,森林是由一堆树组成的,而根据purfer序列,一棵\(n\)个点的有标号的 ...
- vue学习【四】vuex快速入门
大家好,我是一叶,今天我们继续踩坑.今天的内容是vuex快速入门,页面传值不多的话,不建议vuex,直接props进行父子间传值就行,使用vuex就显得比较臃肿. 我们先预览一下效果,如图1所示. 图 ...