SQL Server Query Store Settings (查询存储设置)

news2024/12/22 22:22:15

参考:Query Store Settings - Erin Stellato
        在 SQL Server 2017 中,有九 (9) 个设置与查询存储相关。虽然这些设置记录在sys.database_query_store_options中,但我经常被问到每个设置的值“应该”是多少。我在下面列出了每个设置,以及默认值和更改设置的注意事项。

操作模式

        SQL Server 2016 或 SQL Server 2017 中新数据库或升级数据库的默认值为 OFF。对于 Azure SQL 数据库,默认值为 READ_WRITE。

        如果要启用查询存储,则需要将其设置为 READ_WRITE,这是所需的状态。

        您还可以选择 READ_ONLY,这样就不会捕获新查询、新计划、运行时统计信息和等待统计信息(在 SQL Server 2017 中),但仍会强制执行任何强制计划。如果达到 MAX_STORAGE_SIZE_MB 限制(见下文),则会出现此状态。您可以使用以下查询检查实际状态与所需状态:

SELECT [actual_state_desc], [desired_state_desc]
FROM [sys].[database_query_store_options];
GO

        建议始终以 READ_WRITE 状态运行。我听说过有些环境会在 READ_WRITE 和 READ_ONLY 之间切换。如果您想了解您的工作负载并拥有解决性能问题所需的数据,您需要持续捕获信息。

查询_捕获_模式

        SQL Server 2016 和 SQL Server 2017 的默认值为 ALL。对于 Azure SQL 数据库,默认值为 AUTO。

        使用 AUTO 时,从资源利用率角度来看无关紧要或不经常执行的查询不会被捕获。如果您需要捕获可能只执行几次或使用很少资源的查询,请使用 ALL。否则,请使用 AUTO,因为这将捕获您的大部分工作负载。

        还有第三个选项,NONE,即不捕获任何新查询。对于已存在于查询存储中的查询,将继续捕获运行时和等待统计信息。

        我建议将此选项设置为 AUTO,因为您的环境中需要调整/注意的查询数量只占执行的查询总数的一小部分。如果您排除不使用大量资源或不经常执行的查询,您就不会错过重要数据。

每次查询的最大计划数

        SQL Server 2016、SQL Server 2017 和 Azure SQL 数据库的默认值为 200。

        此设置是一个整数,因此理论上您可以将其设置为 2,147,483,647!如果您不知道查询可能有多少个不同的计划,则可以使用 sys.dm_exec_query_stats 并获取给定 query_hash 的不同 query_plan_hash 值的数量:

SELECT [query_hash], COUNT (DISTINCT [query_plan_hash])
FROM [sys].[dm_exec_query_stats]
GROUP BY [query_hash]
ORDER BY 2 DESC;
GO

        虽然我愿意相信一个查询有 200 个不同的计划确实太多了,但我与几位 DBA 交谈过,他们证实他们有数千个计划。因此,如果您的查询不稳定且生成大量不同的计划,并且您想要捕获每个不同的计划,则可能需要增加此设置。要知道,具有大量查询计划的工作负载将需要更多空间,因此存在限制。您可以将限制设置为低于可能的计划数量以控制大小,但要明白您不会捕获每个计划变体。对于大多数环境来说,200 这个值是一个很好的起点。

最大存储大小_MB

        对于 SQL Server 2016 和 SQL Server 2017,默认值为 100MB。对于 Azure SQL 数据库,默认值特定于层级(基本 = 10MB、标准 = 100MB、高级 = 1GB)。

        查询存储数据存储在用户数据库的内部表中(与其他系统表一样,位于 PRIMARY 文件组中),并通过目录视图公开。您可以配置查询存储可使用的磁盘空间量。

        对于本地解决方案,应增加此设置。对于 SQL 数据库,可能需要增加此设置,有多个因素会影响查询存储数据所需的空间量。这些因素包括:

    1、QUERY_CAPTURE_MODE 的值;如果您捕获所有查询,您将获得比使用 AUTO 时更多的信息。数据量很难预测 - 这取决于您的工作量(您是否有很多只运行一次的查询?您是否有很多使用很少资源的查询?)。

    2、您在查询存储中保留数据的时间长度 (CLEANUP_POLICY)。保留的数据越多,所需的空间就越大。

    3、无论您是否运行 SQL Server 2017 并捕获等待统计信息 (WAIT_STATS_CAPTURE_MODE)。等待统计信息非常有价值,但需要保存和保留的数据更多。

    4、INTERVAL_LENGTH_MINUTES 的值。此值越低,您将拥有的运行时统计数据越多,因此您需要的空间就越多。

    5、工作负载类型。如果您的工作负载为临时工作负载,且查询文本变化较大,那么您将存储更多单个查询,因此将存储更多计划、更多运行时和等待统计信息。如果您的工作负载稳定,且没有临时查询或由动态字符串或 ORM 工具(如 NHibernate 或 Entity Framework)生成的查询,那么您的查询数量和数据总量将更少。

        如您所见,MAX_STORAGE_SIZE_MB 的值应该是多少并没有“答案”。我建议从分配 2GB 开始,然后通过 sys.database_query_store_options 和扩展事件进行监控。对于某些解决方案,1GB 就足够了。对于其他解决方案,您可能需要 5GB 或更多。

        2019 年 5 月 30 日更新: Microsoft 仍未提供任何文档列出 MAX_STORAGE_SIZE_MB 的建议,但是,您可以在 Azure SQL 数据库中将此选项设置为的最大值是 10GB……这表明 Microsoft 可能认为任何大于 10GB 的数据都太大了。这有什么关系?更大的查询存储可能需要更长的时间来加载,并产生更多的开销。您可能必须减少保存数据的时间以使其达到 10GB 的大小。

清理政策(STALE_QUERY_THRESHOLD_DAYS)

        SQL Server 2016、SQL Server 2017 和 Azure SQL 数据库的默认值为 30,但 Azure SQL 数据库的基本层除外,其默认值为 7 天。

        您想保留多少历史数据?如果您是一家从事生产开发的商店,您可能希望保留更多历史记录。如果您的工作量相当稳定,并且您每季度或更少地推出变更,那么 30 天的信息可能对您来说就足够了。您保留的数据越多,您需要的磁盘空间就越多。如果您不确定工作量,我建议从此设置至少 30 天开始,在最初几个月的使用中,您就会弄清楚是否要保留较旧的数据。

基于大小的清理模式

        SQL Server 2016、SQL Server 2017 和 Azure SQL 数据库的默认值为 AUTO,我建议保留此值。

        如果值为 AUTO,当查询存储接近 MAX_STORAGE_SIZE_MB 分配的存储大小时,它将自动清除最旧的数据,以确保有足够的空间容纳新数据。尚未达到 CLEANUP_POLICY 的数据可能会被删除(例如,如果 MAX_STORAGE_SIZE_MB 为 2GB,CLEANUP_POLICY 为 30 天,并且您在 15 天内达到 2GB,则将开始删除数据)。

        您可以将其设置为 OFF,但在这种情况下,如果达到 MAX_STORAGE_SIZE_MB,OPERATION_MODE 将更改为 READ_ONLY,您将不再捕获新数据。建议将其设置为 AUTO,并根据需要调整 MAX_STORAGE_SIZE_MB。

数据刷新间隔秒数

        SQL Server 2016、SQL Server 2017 和 Azure SQL 数据库的默认值为 900(15 分钟)。

        建议保留该值的默认值。


间隔长度分钟

        SQL Server 2016、SQL Server 2017 和 Azure SQL 数据库的默认值为 60。

        这是一个关键设置,因为它决定了运行时统计信息汇总的时间窗口。您只能为该设置选择固定值(1、5、10、15、30、60、1440)。该值越小,您拥有运行时统计信息的时间窗口就越小。这将允许您以更精细的级别查看数据。但是,值越小,您捕获的数据就越多,因此需要的空间就越多。

        对于我支持的客户端环境,我将其设置为 30,因为我喜欢更短的分析时间窗口,并且根据我迄今为止必须排除的性能问题,这是一个很好的窗口。如果您有空间限制或顾虑,请将其保留为默认值 60。


等待统计捕获模式

        SQL Server 2016、SQL Server 2017 和 Azure SQL Database 的默认值为 ON。

        如果您将启用了查询存储的数据库从 SQL Server 2016 升级到 SQL Server 2017,则升级时将启用 WAIT_STATS_CAPTURE_MODE。如果您在 SQL Server 2017 上有一个数据库并启用了查询存储,则将启用此选项。

        如果您使用的是 SQL Server 2017,我建议启用此选项,因为这些信息在排除查询性能故障时非常有价值。请注意,您可能需要增加 MAX_STORAGE_SIZE_MB 以容纳这些额外的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1933765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Puppeteer动态代理实战:提升数据抓取效率

引言 Puppeteer是由Google Chrome团队开发的一个Node.js库,用于控制Chrome或Chromium浏览器。它提供了高级API,可以进行网页自动化操作,包括导航、屏幕截图、生成PDF、捕获网络活动等。在本文中,我们将重点介绍如何使用Puppeteer…

移动打车项目

1.技术栈: AndroidJNIHTTPSlibeventmysql/redis高德地图 2.概要流程设计 1.注册 2.登录 3.司机地理位置上传更新 4.乘客地理位置上传更新 5.乘客下单流程 6.司机完成订单流程

[AWS]EKS启动HPA,HPA指标<unknown>,报错:error: Metrics API not available

背景:在AWS上创建的EKS集群,想要对于deployment部署HPA,来autoscling副本数。 1.HPA一般基于CPU或者内存对副本数进行控制,所以必须需要Metrics Server。 (Metrics Server 是 Kubernetes 集群的一个关键组件&#xff0…

7、自定义管理站点

目录 1、自定义后台表单2、添加关联的对象3、自定义后台更改列表4、自定义后台界面和风格(1)自定义你的工程的模板(2)自定义你应用的模板 1、自定义后台表单 通过admin.site.register(Question)注册Question模型,Djan…

AI自动生成PPT哪个软件好?高效制作PPT优选这4个

7.15初伏的到来,也宣告三伏天的酷热正式拉开序幕~在这个传统的节气里,人们以各种方式避暑纳凉,享受夏日的悠闲时光。 而除了传统的避暑活动,我们还可以用一种新颖的方式记录和分享这份夏日的清凉——那就是通过PPT的方式将这一传…

抖音视频素材去哪里找啊?视频素材网站库分享

在这个视觉盛宴的抖音平台上,高质量和有趣的视频素材常常是吸引观众的重要钥匙。如果你也正在寻找那些能让你的视频作品更加出色的资源,那么恭喜你,今天我将为你介绍10个超实用的视频素材网站,让你的抖音视频创作充满创意和效率。…

只用 CSS 能玩出什么花样?

在前端开发领域,CSS 不仅仅是一种样式语言,它更像是一位多才多艺的艺术家,能够创造出令人惊叹的视觉效果。本文将带你探索 CSS 的无限可能,从基本形状到动态动画,从几何艺术到仿生设计,只用 CSS 就能玩出令…

linux开机后不用登陆,无法正常进入系统,出现:/#的提示符

linux开机后不用登陆,无法正常进入系统,出现:/#的提示符 解决方案: 1、输入命令 ls /dev/mapper 此时会出现3个文件。其中rhel-root文件 是我们下面所要用的文件。 ls的目的就是为了让大家能知道自己带"-root" 文件的前缀是什…

Linux·权限与工具(上)

1. shell命令以及运行原理 Linux严格意义上来说是一个操作系统,我们称之为 "核心(kernel)" ,但我们一般的用户不呢个直接使用到核心,因为不会用。所以开发者在核心外面封装了一层 "外壳(shell)" 程序,来与核心…

某安居客滑块验证码

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识,欢迎私信共享学习心得。 如有侵权,联系博主删除。 请勿商用,否则后果自负。 网址 aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/Y2FsbGJhY2s9c2hpZWxkJmZyb209YW50aXNwYW0 …

数据包的跨层封装

首先,我们先简单地分析一下数据包的组成结构: 如图 数据包简略地分为以下几层: 二层:封装MAC地址(数据链路层) 三层:封装IP地址 — 表明源IP和目标IP,主要用于路由器之间的信息转发…

SAPUI5基础知识15 - 理解控件的本质

1. 背景 经过一系列的练习,通过不同的SAPUI5控件,我们完成了对应用程序界面的初步设计,在本篇博客中,让我们一起总结下SAPUI5控件的相关知识点,更深入地理解SAPUI5控件的本质。 通常而言,一个典型UI5应用…

FastAPI 学习之路(五十七)校验是否登陆

在之前的分享的中,产生了token,用于做登录的认证,那么产生了token后,登陆携带了token,我们如何校验呢? 先来梳理下逻辑: 1. 调用登录接口,产生token 2.调用依赖登录的接口&#xff…

1.CATIA:CAA调用Excel接口

生成调用Excel的头文件 参考如下进行excel头文件的生成: 如何使用vs2022通过excel.exe生成VC、C++能够使用的头文件 添加如下的接口: #include "CApplication.h" #include "CWorkbook.h" #include "CWorkbooks.h" #include "CWorkshee…

Linux——文件目录指令、时间日期指令、搜索查找指令、压缩解压指令

目录 文件目录指令 pwd & ls 查看当前工作目录&显示当前目录所有文件及目录 cd 切换目录 mkdir & rmdir 创建&删除目录 touch 创建空文件 cp 拷贝文件/文件夹指令 rm 删除文件或文件夹 mv 移动或重命名文件 cat 查看文件 more指令 less 查看文件内容…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(8)----中断获取FIFO数据并应用MotionFX库解析空间坐标

驱动LSM6DS3TR-C实现高效运动检测与数据采集.8--中断获取FIFO数据并应用MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启LED开启INT中断参考驱动程序中断读取传感器数据主程序演示 概述 本文将探讨如何使用中断机制获取FIFO数据并应用MotionFX库解析空间坐标。Motio…

CIS光生电荷

文章目录 CIS基础光电效应光的吸收最大光敏度的计算 CIS基础 CIS光信号转电信号:CIS图像传感器主要用来把直接发射或物体反射的光子组成的图像转换成电信号。在积分时间内,图像传感器吸收光子并记录电信号,确定积分时间内每一个像素接收到的…

昇思25天学习打卡营第15天|munger85

K近邻算法实现红酒聚类 现在数据集这个就是红酒的分类的数据集红酒每一个都会有很多的属性有三个属性下载数据集,这个是红酒的分类的数据集,红酒每一个都会有很多的属性,有三个属性。这十三个属性就可以用来分辨它是哪一个13个属性就可以用来…

【机器学习】Grid Search: 一种系统性的超参数优化方法

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Grid Search: 一种系统性的超参数优化方法引言什么是Grid Search?Gr…

【机器学习】机器学习与图像分类的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在图像分类中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 卷积神经网络1.2.2 迁移学习1.2.3 混合模型 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 1.4 模型评估与性能优…