你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 数据资源管理器旨在为引入和查询遥测、日志、事件、跟踪和时序数据提供无与伦比的性能。 它具有优化的存储格式、索引,并使用高级数据统计信息进行高效的查询规划和实时编译的查询执行。
存储与计算
Azure 数据资源管理器分离存储和计算资源。 永久性数据驻留在Azure Blob 存储中,而计算资源可能会存储临时数据或充当永久性存储的缓存。
这种分离具有以下优势:
- 独立横向扩展存储和计算资源。
- 跨多个计算群集访问相同数据。 有关详细信息,请参阅 Data share。
- SKU 优化。 有关详细信息,请参阅为群集选择 SKU。
数据存储
Azure 数据资源管理器将所有已引入的数据划分为 盘区 或 数据分片,即目标表的水平切片。 盘区最小可以只包含一条记录。 随着数据累积在表中,Azure 数据资源管理器会自动合并盘区,直到它们增长到包含数百万条记录。 每个盘区都独立于其他盘区进行编码和索引。 此功能有助于实现数据摄取吞吐量的线性扩展。
盘区均匀分布在各个群集节点上,并同时缓存在本地 SSD 和内存中。 此分布增强了准备和执行高度分布式和并行查询的容量。
有关数据存储的更多信息,请参阅区段概述。
注意
Azure 数据资源管理器还保留重要的元数据,例如表架构和策略对象。 有关策略列表,请参阅策略概述。
数据缓存
Azure 数据资源管理器使用多级数据缓存系统尽可能靠近 CPU 来保持最相关的数据。 此缓存系统依赖于盘区不可变性,并且完全适用于 压缩的数据。 为了提高查询性能,数据即使在 RAM 中也保持压缩状态,并且仅在查询需要时解压缩。
有关缓存的更多信息,请参阅缓存策略。
文本索引
Azure 数据资源管理器旨在引入数据时有效地为自由文本(字符串)和类似 JSON(动态)的列编制索引。 索引保持粒度级别,以便基于索引评估查询的各个部分,而无需扫描数据。
在后台持续通过合并优化盘区,可提升压缩和索引效果,从而确保高效存储和较低的查询延迟。 当区段达到一定大小后,仅合并索引以提升查询性能,同时不降低效率。
有关范围和索引合并的详细信息,请参阅合并策略。
行存储
Azure 数据资源管理器提供名为“行存储”的中间存储解决方案。 行存储允许有效引入少量数据,并确保此数据立即可供查询。 当您为群集启用流式引入时,数据最初会引入到行存储中,然后再移至列存储盘区。
有关详细信息,请参阅批处理与流式引入。
列压缩
Azure 数据资源管理器维护处于压缩状态的数据,从而减少存储和处理数据所需的内存量。 此行为可提高查询性能和系统资源的使用效率。
Azure 数据资源管理器可避免垂直压缩,这涉及到对数据进行排序以提高压缩,因为它在自由文本或半结构化数据方案中的 CPU 成本较高。 相反,可以为具有主导查询模式的方案指定首选数据排序顺序。 这种权衡优先考虑查询的快速数据可用性。
有关指定数据排序顺序的详细信息,请参阅行顺序策略。
分布式数据查询
Azure 数据资源管理器使用分布式数据查询技术,用于对大型非结构化数据集进行快速临时分析。 此技术的主要功能包括:
- 查询生成的临时数据存储在聚合 RAM 中
- 相关区段会在查询计划中标示出来,从而实现快照隔离
- 通过较短的默认超时时间优先确保查询快速高效
- 对跨群集查询的本机支持,以最大程度地减少群集间数据交换
- 查询语句会被即时编译为高度高效的机器代码,利用来自所有区段的数据统计信息,并针对列编码的具体特性进行定制
注意
Azure 数据资源管理器旨在配合 Kusto 查询语言 (KQL) 使用,后者是专为 Azure 数据资源管理器打造的。 此外,还支持 T-SQL。