gpt4 book ai didi

sql-server - 如何优化 Zumero 同步查询

转载 作者:行者123 更新时间:2023-12-04 02:18:15 31 4
gpt4 key购买 nike

我目前在 zumero 同步数据库上遇到非常长的同步时间(超过一分钟),并且在进行一些分析后,罪魁祸首似乎是一个特定的查询,它花费了 20 多秒(适当匿名):

WITH relevant_rvs AS
(
SELECT rv.z_rv AS rv FROM zumero."mydb_089eb7ec0e2e4772ba0dde90170ee368_mysynceddb$z$rv$271340031" rv
WHERE (rv.txid<=913960)
AND NOT EXISTS (SELECT 1 FROM zumero."mydb_089eb7ec0e2e4772ba0dde90170ee368_mysynceddb$z$dd$271340031" dd WHERE dd.rv=rv.z_rv AND (dd.txid<=913960))
)
INSERT INTO #final_included_271340031_e021cfbe1c97213dd5adbacd667c08439fb8c6 (z_rv)
SELECT z$this.z_rv
FROM zumero."mydb_089eb7ec0e2e4772ba0dde90170ee368_mysynceddb$z$271340031" z$this
WHERE (z$this.z_rv IN (SELECT rv FROM relevant_rvs))
AND MyID = (MyID = XXX AND MyOtherField=XXX)
UNION SELECT z$this.z_rv
FROM zumero."mydb_089eb7ec0e2e4772ba0dde90170ee368_mysynceddb$z$old$271340031" z$this
WHERE (z$this.z_rv IN (SELECT rv FROM relevant_rvs))
AND (MyID = XXX AND MyOtherField=XXX)

我采用了查询的后一个 SELECT 部分并单独运行它,这会重现同样糟糕的性能。有趣的是,执行计划建议应用索引,但我不愿意更改 zumero 生成的表的架构,向这些表添加索引是否可以安全地尝试并且可能有帮助?

源表中有 100,000 条左右的记录,过滤器会导致每个客户端同步 100-1000 条左右的记录,因此数据量不是微不足道的,而是我不希望在查询性能方面造成重大问题的级别。

有没有人有优化 Zumero 同步性能服务器端的经验?源表上的任何索引是否传播到这些表?在这种情况下,他们似乎没有。

最佳答案

z$old 表上创建自定义索引应该是安全的。我希望它有助于提高您的查询性能! (很高兴看到评论让我们知道它是否存在。)

我认为这种索引可能导致的唯一问题是它可能会阻止主机表上的某些架构更改。例如,如果您尝试从主机表中删除 [MyOtherField] 列,Zumero 触发器也会尝试从 z$old 表中删除相同的列, 并且事务会因错误而失败(这可能有点令人惊讶,因为索引不在直接作用于的表上)。

另一件需要考虑的事情:给这个新索引起一个名字,如果它出现在错误消息中,这个名字会被识别/帮助,这可能也有帮助。然后(一如既往)随时联系 support@zumero.com,如果出现任何进一步的问题或问题。

关于sql-server - 如何优化 Zumero 同步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32762560/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com