Join SnappyData并置加入一个物理服务器设置

Join SnappyData并置加入一个物理服务器设置,join,snappydata,Join,Snappydata,我正在加入两个表,其中SnappyData中当前有大量100M-1B行,配置在一台服务器上,具有64个CPU内核和512GB内存,我希望利用。然而,文档中的描述似乎暗示了并置联接发生在每个节点级别 实际上,我需要的是每个bucket级别的并置连接或分区连接,我并没有充分利用服务器,因为总CPU利用率在大多数情况下约为10%或更少 对于join,我使用Rowstore和SQL语句。我使用单节点设置脚本snappy-start-all.sh设置了SnappyData,其中包括一个lead、一个ser

我正在加入两个表,其中SnappyData中当前有大量100M-1B行,配置在一台服务器上,具有64个CPU内核和512GB内存,我希望利用。然而,文档中的描述似乎暗示了并置联接发生在每个节点级别

实际上,我需要的是每个bucket级别的并置连接或分区连接,我并没有充分利用服务器,因为总CPU利用率在大多数情况下约为10%或更少

对于join,我使用Rowstore和SQL语句。我使用单节点设置脚本snappy-start-all.sh设置了SnappyData,其中包括一个lead、一个server和一个locator,并进行了一些定制,以使用更多的mem和CPU核心:

形态/线索

localhost -locators=localhost:9999 -heap-size=200g -spark.executor.cores=30 -dir=/snappydata/lead1
配置/服务器

localhost -locators=localhost:9999  -heap-size=200g -spark.executor.cores=30 -dir=/snappydata/server1
形态/定位器

localhost -peer-discovery-port=9999 -heap-size=2048m -dir=/snappydata/locator1
我不知道如何解决这个问题,我的问题是:

并置联接究竟是如何工作的?并置联接是发生在每个节点级别还是每个bucket级别,或者介于两者之间?除了设置桶号,还有什么我可以调整的吗? 除了并置联接之外,在联接列上创建索引还有帮助吗? 配置是否适合我的工作负载?或者我应该设置多个服务器以充分利用资源? 如果我的设置看起来不错,那么CPU利用率低可能是由于扭曲的哈希分区方案造成的,我在哪里可以调整分区方案以避免扭曲的分区? 以上任何问题的任何信息或提示非常感谢您在一篇文章中提出了很多问题:

更新:

两行表的架构看起来像以下列都是整数类型:

Table_A(key1, key2, value1, value2, value3) 
  USING ROW OPTIONS (partition_by 'key1, key2')

Table_B(key1, key2, value4, value5) 
  USING ROW OPTIONS (partition_by 'key1, key2', colocate_with 'Table_A').
联接结果将包含: 表1,键2,值1,值2,值3,值4,值5


键1可以有约200个不同的值,键2可以有约2M个不同的值。和key1、key2分布是倾斜的且不是唯一的-只有当它们满足以下两个托管条件时,才支持涉及两个或多个分区行表(带或不带其他复制表)的一些查询:

查询的WHERE子句对查询中所有分区表的所有分区列都具有equijoin条件。 查询中的所有分区表都是同位的。
这些条件允许SnappyData将联接查询分发到承载数据的所有服务器。查询在每个本地数据存储上并发执行,而无需将表数据从一个成员移动到另一个成员来执行联接。联接在每个数据存储的本地数据集上执行,主查询成员聚合来自每个数据存储的结果以获得结果集。

仅当涉及两个或多个分区行表(带或不带其他复制表)的查询同时满足以下两个托管条件时,才支持这些查询:

查询的WHERE子句对查询中所有分区表的所有分区列都具有equijoin条件。 查询中的所有分区表都是同位的。 这些条件允许SnappyData将联接查询分发到承载数据的所有服务器。查询在每个本地数据存储上并发执行,而无需将表数据从一个成员移动到另一个成员来执行联接。联接在每个数据存储的本地数据集上执行,主查询成员聚合来自每个数据存储的结果以获得结果集

并置联接究竟是如何工作的?并置联接是发生在每个节点级别还是每个bucket级别,或者介于两者之间?除了设置桶号,还有什么我可以调整的吗? 并置联接发生在每个节点级别

除了并置联接之外,在联接列上创建索引还有帮助吗? 这取决于您的联接查询

配置是否适合我的工作负载?或者我应该设置多个服务器以充分利用资源? 设置多个服务器应有助于更好地利用资源

如果我的设置看起来不错,那么CPU利用率低可能是由于扭曲的哈希分区方案造成的,我在哪里可以调整分区方案以避免扭曲的分区? 你可以从这个指针开始- 您还可以根据数据的性质,根据范围、列表或表达式对数据进行分区。通过这些示例了解如何实现此目标-

并置联接究竟是如何工作的?并置联接是发生在每个节点级别还是每个bucket级别,或者介于两者之间?除了设置桶号,还有什么我可以调整的吗? 并置联接发生在每个节点级别

除了并置联接之外,在联接列上创建索引还有帮助吗? 这取决于您的联接查询 配置是否适合我的工作负载?或者我应该设置多个服务器以充分利用资源? 设置多个服务器应有助于更好地利用资源

如果我的设置看起来不错,那么CPU利用率低可能是由于扭曲的哈希分区方案造成的,我在哪里可以调整分区方案以避免扭曲的分区? 你可以从这个指针开始- 您还可以根据数据的性质,根据范围、列表或表达式对数据进行分区。通过这些示例了解如何实现此目标-

我会尽快为您解答这个问题PI会尽快为您解答这个问题虽然这两点是提高查询性能的好建议,但这些限制不再仅适用于Xd中的SnappyData。Snappydata支持完全分布式联接,而不考虑数据相关性。虽然这两点是提高查询性能的好建议,但这些限制不再仅适用于Snappydata中的Xd。Snappydata支持完全分布式联接,而不考虑数据关联性。