我正在开发一台服务器,它包含OLTP工作负载和数据仓库/报告工作负载。OLTP系统需要亚秒(毫秒)的响应时间,而报告工作负载的阈值为分钟。问题是,一些用户将在我们的OLTP环境中的高峰事务活动期间运行多个报告,从而减缓OLTP查询的速度。OLTP查询本身通常运行20-30 in,但当许多报告/数据仓库查询同时启动时,OLTP查询就开始在4-5秒范围内运行。我们的瓶颈似乎是CPU,因为这是我们所有等待的地方。
当然,我想将两台不同服务器上的工作负载分开,但我想知道我们是否可以通过使用资源调控器来获得快速的改进。
我正在考虑两种方法:(1)为OLTP系统设定最小的CPU分配,以保证它有25%的资源,或者(2)最大限度地限制reporting\数据仓库查询,使它们不能占用CPU的50%以上。
有没有人在资源总督方面有任何实际经验,可以指引我在这两个方向之一?或者你会建议另一个用法模式呢?
发布于 2020-05-14 21:43:39
支持混合工作负载不仅需要资源治理。
文档称这个场景为实时操作分析,它是一堆功能一起工作的。
首先,需要行版本控制,以确保报表用户不会在数据库中创建阻塞。因此,将数据库设置为读取提交的快照,或强制报表以快照隔离方式运行。
锁定解决后,您需要资源治理和隔离,以防止报表用户使用过多的服务器资源。对于许多工作负载,OLTP部件不需要数据文件物理IO,而是依赖于日志文件IO。因此,数据和日志的物理分离可以帮助防止IO从报告中干扰OLTP。对于资源治理,我首先要限制报告工作负载的CPU、IOPS、内存,可能还有maxdop。
接下来您需要做的就是减少报告工作量的开销。为此,使用可更新的非聚集列存储索引、筛选索引、索引视图和列存储压缩延迟的一些组合。
最后一点是,您需要使用查询存储来监视工作负载,并为报表开发人员提供对计划的可见性。
https://dba.stackexchange.com/questions/267169
复制相似问题