文章
· 二月 13, 2023 阅读大约需 3 分钟

何时使用列存储

在 InterSystems IRIS 2022.2 中,我们引入了列存储作为持久化 IRIS SQL 表的新选项,可以将您的分析查询性能提高一个数量级。该功能在 2022.2 和 2022.3 中标记为实验性,但将在即将发布的 2023.1 版本中“升级”为完全支持的生产能力。

产品文档和这个介绍性视频已经描述了行存储(仍然是 IRIS 上的默认设置并在我们的整个客户群中使用)与列表存储之间的区别,并提供了有关为您的用例选择合适的存储布局的高级指导。在本文中,我们将详细阐述这个主题,并根据行业实践建模原则、内部测试和抢先体验计划参与者的反馈分享一些建议。

通常,我们为您的 IRIS SQL 模式选择合适的表布局的指南如下:

  1. 如果您正在部署利用 IRIS SQL 或对象的应用程序,例如电子病历、ERP 或事务处理应用程序,则无需将其当前的行存储布局更改为列式存储布局。为最终用户应用程序或编程事务发出的大多数 SQL 查询仅检索或更新有限数量的行,结果行通常对应于表行,聚合函数的使用非常有限。在这种情况下,列式存储和矢量化查询处理提供的优势不适用。
  2. 如果在应用程序还嵌入了操作分析,如果相应的分析查询的当前性能不令人满意,请考虑添加列索引。这包括,例如,显示当前库存的仪表板或实时数据的基本财务报告。查找聚合中使用的数字字段(例如数量、货币)或范围条件中使用的高基数字段(例如时间戳)。这种机会的一个很好的指标是当前使用位图索引来加速大量行的过滤,通常是在低基数字段(例如分类或有序字段)上。无需替换这些位图索引;附加的柱状索引与它们一起工作得很好,旨在避免从主地图或常规索引地图(每行单个 gref)中过度读取。
  3. 如果您的 IRIS SQL 表包含的行数少于一百万,则无需考虑列式存储。我们不希望将自己固定在特定数字上,但矢量化查询处理的好处不太可能在这些低范围内产生影响。
  4. 如果您正在为数据仓库、商业智能或类似的分析用例部署 IRIS SQL 架构,请考虑将其更改为默认的列式存储。星型模式、雪花模式或其他非规范化表结构以及位图索引和批量摄取的广泛使用是这些用例的良好指标。从列式存储中获益最多的分析查询是那些扫描大量行并在它们之间聚合值的查询。在定义“柱状表”时,IRIS 会透明地对该表中不适合柱状存储的列采用行布局,例如流、长字符串或串行字段。 IRIS SQL 完全支持这种混合表布局,并将对查询计划中符合条件的部分使用矢量化查询处理。位图索引在柱状表上的附加值有限,可以忽略不计。

技术使用与否将根据环境和数据相关参数而有所不同。因此,我们强烈建议客户在具有代表性的设置中测试不同的场景。列索引可以很容易地添加到常规的按行组织的表中,并且会很快产生对查询性能优势的现实看法。这与混合表格布局的灵活性一起,是 InterSystems IRIS 的一个关键差异化因素,可帮助客户实现数量级的性能改进。

随着我们在完整的生产版本中获得更多的实际经验,我们打算使这些建议更加具体。显然,我们可以通过抢先体验计划和 POC 参与,根据客户的实际架构和工作量提供更具体的建议,并期待客户和社区成员的反馈。 列存储Columnar Storage 是 InterSystems IRIS Advanced Server 高级版的一部分,在 InterSystems IRIS 和 IRIS for Health 社区版中也可以试用。有关完全脚本化的演示环境,请参阅这里的 GitHub资源 

讨论 (0)1
登录或注册以继续