| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【Azure Data Platform】Azure SQLDW 结果集缓存 -> 正文阅读 |
|
[Java知识库]【Azure Data Platform】Azure SQLDW 结果集缓存 |
前言随着数据量的不断增大,即使是SQL DW这种MPP架构,也很难通过单纯地提升DWU来维持性能。所以从SQL DW Gen2(现在用的都已经是Gen2了)开始,引入了一系列的提升性能的特性。比如列存储索引,结果集缓存等。 本文主要讲的是缓存,缓存的核心思想就是把常用的查询出来的结果集存储在内存,减少反复编译、检索等过程。 对于缓存,首先被想到的就是Redis,它确实是很厉害的工具,不过对于BI领域,这种无疑有一定的使用难度,毕竟BI关注的是数据的挖掘和使用,而不是这种性能提升,同时引入一个引擎也会带来相应的成本。 从2019年开始, Azure SQL DW引入了结果集缓存(result set caching)。它会将读取查询的结果存储在 Azure SQL DW 的控制节点中,并且将其返回给用户 优缺点正如我一贯的说法,一个功能如果具有开关的选择,那证明它是有适用场景的。首先我们来说说“坏处” 缺点
优点之所以把优点放在缺点之后,是因为我更看中缺点的影响,如果影响太大,那么优点可能就没有价值了。
设置结果集缓存要启用该功能,所需权限:master 库上具有dbmanager 数据库角色的成员。 先用下面语句检查是否已经弃用,如果启用,则返回 1,否则返回 0,我们用的测试库是已经启用了,所以这里先禁用: 禁用命令如下: 在master库运行
监控功能的使用可以通过 DMV 监控缓存使用情况,如果特定查询 ID 有缓存命中或未命中,您可以在查询请求步骤中查看到ReturnOperation的操作类型。也可以用官网中的方法查看:添加链接描述
然后我们重新开启缓存设置之后,跑第一次,因为第一次是不会有缓存,所以我们看到用了57秒。但是后面的查询就不一样了。 总结从这个测试来看,缓存功能对需要反复查询的相同SQL 而言还是有相当不错的性能提升。不过正如前面所说,如果只是临时查询,则用处不大,反而占用了控制节点的缓存空间。 另外本人之前参与的SQL DW项目,因为主要是ETL过程的转换部分,对数据而言更多只是暂时存放并借用SQL DW的MPP架构提高处理速度,接着就会传输到下游系统,那么结果集缓存对这类操作的作用就不大了。毕竟很少有再次查询的机会。 因此,一个可选的功能,并不真的没有坏处,要着重检查它的适用场景是否合适。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:54:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |