问题标签 [citus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - Citus 在我的测试环境中没有横向扩展
我已经设置了一个 Citus 环境:(Citus 7.2.2,Postgres 10.12)1)1x 协调节点 2)5x 工作节点 3)(6 个节点中的每一个节点都有 2GB 内存和 2 核 VM)
我使用带有内置 sql 的 pgbench(例如 simple-update、select-only、tpc-b)。当我将工作节点从 1 添加到 5 时,tps 仅增加不到 1-10%(取决于客户端的数量和硬盘或 ssd 上的 WAL)。
使用 SELECT 进行基准测试时,协调器 VM 负载可以达到 60+,而使用其他 2 种 SQL 的负载只有 2 左右。工作节点负载始终约为 1,磁盘 io 介于 500 和 2000 io/sec 之间
这个结果听起来对吗?我能做些什么来提高性能?
谢谢,大卫
database - Citus 与 jsonb 关系的协同定位
我正在尝试使用 citus 在集群中共同定位表,但在 json 方案中的表中提到了这种关系,如下例所示:
并且在资源列中以及在此示例中提到了该关系:
是否可以创建分布式表,以便它们通过这种关系位于同一位置?
postgresql - PostgreSQL - 我应该在 Postgresql 11 中使用 EXCLUSIVE LOCK 模式逻辑复制吗?
我正在使用带有 Citus Extension 社区版的 PostgreSQL 11。我有 2 个表,每个表都有 32 个分片,分布在 2 个节点(带有 Citus 扩展的 Postgres 服务器)中。表 A 中的每个分片都有一组 Colocated 分片(数据相互依赖)。
我正在尝试编写一个程序,将一个节点上的分片及其位于同一位置的分片复制到另一个节点。
所以我使用发布者/订阅者功能来设置复制。我的问题是,当复制正在进行并且写入(更新/插入/删除)查询出现时,复制会受到任何影响吗?
在这种情况下我应该使用任何类型的锁定,例如独占锁定模式吗?
sql - Citus PostgreSQL 单机集群到多租户数据库的多机集群
使用以下标准为多租户应用程序设计数据库架构:
多个租户类型(每个租户的不同架构,每个租户大约 20 个表)
从 2 开始应该扩展到 50+ 租户
类型从 20 开始的每个租户类型应该扩展到 1000 个租户,每个租户有 50 到 500 个用户
数据隔离并不重要
拥有成本至少,在开始的时候,应该是超低的
根据这些标准,什么是理想的选择?
我的选择:
每个租户类型和分片租户具有不同架构/数据库的 Citus PostgreSQL,在 VM 上运行服务器。现在 Citus 有 2 种部署类型,即..单机集群和多机集群
我们是否可以从最初的单机集群开始,从而节省一些钱,然后在没有停机时间或停机时间最短的情况下转换为多机集群?
所以从那里我们可以横向扩展添加新的物理工作节点实例。
postgresql - Azure Hyperscale (Citus) 无法使用 citus 帐户创建数据库
在 Azure 门户上创建 Azure Hyperscale (Citus) 后,我使用 DbBeaver 访问创建的数据库。我可以连接到该数据库(citus
在 Azure 门户上使用帐户及其密码成功登录),但是当我尝试创建新数据库时,我无法创建它。
我有如下异常
经过一段时间的调查,我发现该citus
帐户没有create database
以下权限
但我无法选中该复选框并保存它。它总是抛出我没有citus
帐户权限的异常(我创建 Citus Postgres Db 后创建的默认帐户)
刚刚注意到我可以在上周使用与上述相同的方法成功创建新数据库。但现在我做不到了。
有没有人和我一样的问题?我们该如何解决呢?我试图搜索谷歌,但没有运气。
非常感谢。
postgresql - 缓慢的并发 postgres 插入带有索引的单独表中
我遇到了一个问题,我有 24 个插入查询,它们都插入到不同的表(分片)中,并且当插入同时执行时它们运行缓慢。当我按顺序运行它们时,它们非常快。奇怪的是,这些都插入到其他物理表中,所以我不明白这种严重的争用来自哪里。我正在使用 citus,所以我真的很想看到并行插入不同分片的性能提升。但我 99% 确定问题不是特定于 citus 的。
所有 24 个查询都具有以下形式:
rtsepezocoav_p_452 是父表 rtsepezocoav 的分区(声明式分区)
它们都将大约 10 万条新记录插入到包含大约 2Mio 记录的表(分片)中。
所有表都有 3 个 btree 索引。我知道插入带有索引的表会减慢速度,但我不明白的是同时执行这些插入时性能会严重下降......
当我按顺序运行它们时,它们都需要不到 2 秒的时间:
当我并行触发 24 个查询时(通过终端中以“&”结尾的 psql 命令),它们需要更长的时间:大约 13 秒。
当我没有插入时,我只是并行计数(1),我没有看到任何并发问题,所以问题出在书面上。
我在 postgres12 上,在一台 250GB 内存和 12 个内核的机器上。
我尝试过使用我的 postgres 设置,但无济于事。一些可能最相关的设置:
当我运行标准 pgbench 测试时,最后一个调整似乎提高了性能。但是对于我的实际查询,我没有看到任何区别。
有什么我缺少的设置吗?我真的希望 Postgres 能够在不触及插入结束的同一张表时顺利处理同步插入......
activerecord - Citus "create_distributed_table" 给出 "PG::UndefinedColumn"
当试图用 Citus 创建一个分布式表时,它给出了一个PG::UndefinedColumn: ERROR: column "x" does not exist
我在工作人员和主数据库上启用了 Citus:
我创建了一个复合主键:
尝试这样做时:
它一直在说:
有什么我忘记了吗?
distributed - 在 citusDB 中,我如何知道我的数据是如何分布的?
在 CitusDB 中,我可以创建一个空表:
我可以通过运行以下命令告诉 table1 如何对稍后将加载到表中的数据进行分区:
在这一刻,我将知道我的表是如何分布在 CitusDB 节点上的。
但是,如果我遇到一个不是我创建的新表,但我知道它是分布式的,我怎么知道该表分布在哪个列上?
postgresql - Citus PostgresQL 需要注意哪些设置
我们正在研究使用 CitusDB。在阅读了所有文档后,我们还不清楚一些基础知识。希望有大神指点一下。
在 Citus 中,您指定 ashard_count
和 a shard_max_size
,这些设置是根据文档在协调器上设置的(但奇怪的是也可以在节点上设置)。
当您指定 1000 个分片并分配 10 个表和 100 个客户端时会发生什么?
它是否为每个表(users_1、users_2、shops_1 等)创建一个分片(如此有效地使用所有 1000 个分片。
如果你再增加 100 个客户端,我们已经达到了 1000 个限制,这些表是如何分区的?
shard_max_size
默认为 1Gb 。如果一个分片大于 1Gb,则会创建一个新分片,但是当 shard_count 已经达到时会发生什么?最后,是否建议购买 3000 个分片?我们在文档中阅读了 128 建议用于 saas。但是,如果您有 100 个客户 * 10 个表,那么这个接缝很低。(我知道这取决于..但是..)