我在 Windows 上使用 DBeaver v 5.2.5 并使用它连接到 PostgreSQL 数据库。
要创建连接,我必须指定数据库,而我无意看到同一台服务器上的其他数据库。
在 Mac 上使用 DBeaver 5.3 的同事可以选择查看所有数据库,而不仅仅是默认数据库。
Windows 版本是否有等效设置?
我需要在 PostgreSQL 中实现数据库会话之间的同步。
在 SQL Server 中,我将通过创建自己的“锁定”表来实现它。
Create table MyLock(LockName VARCHAR(100) NOT NULL UNIQUE, LockOwner INT NULL)
Run Code Online (Sandbox Code Playgroud)
我不使用显式事务来避免真正锁定事物,我将通过将会话 ID 设为“所有者”来获取“单例”锁。
UPDATE MyLock
SET LockOwner = *MySessionId*
WHERE LockName = 'Singleton'
AND LockOwner IS NULL;
Run Code Online (Sandbox Code Playgroud)
通过不使用显式事务,我不会阻止其他进程。您可以将其视为“软锁”...
如果我的更新成功,那么我知道我“拥有”锁,我可以处理一些代码,而其他人会等待。如果我的更新没有更新,我知道其他人有“锁”,我等待,或者放弃。
我需要在 PostgreSQL 中实现类似的东西。
你会这样做吗?
Sorry for the longish description... but here we go...
We have a fact table somewhat flattened with a few properties that you might have put in a dimension in a more "classic" data warehouse. I expect to have billions of rows in that table.
We want to enrich these properties with some cleansing/grouping that would not change often, but would still do from time to time.
我们正在考虑将这个初始事实表保留为我们从不更新或删除的“主”表,并为其制作一个“扩展事实”表副本,我们只在其中添加新的派生属性。
生成这些扩展属性值的过程需要映射到查找表的某种堡垒,从中我们获得每一行的几种可能性,然后选择最好的一个(每个初始行一个)。这可能是处理器密集型的。
问题(最后!):
想象一下我的查找表被修改了,我想重新评估初始事实表的一个子集的扩展属性。
我最终会在目标扩展事实表中得到几百万行想要修改的行。
实现此更新的最佳方式是什么?(更新几十亿行表中的几百万行)
我应该编写带有连接的 UPDATE 语句吗?
删除这一百万行并插入新行会更好吗?
还有其他方法吗,比如创建一个仅包含适当插入的新扩展事实表?
谢谢
埃里克
PS:我有 …
如果我通过 javascript API 在 Snowflake 中运行 INSERT/SELECT,看起来无论插入了多少行,返回的 rowCount 都是 1...
myStatement = snowflake.createStatement( {sqlText: mySql} );
myStatement.execute();
rowCount = myStatement.getRowCount();
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来检索插入的行数?难道我做错了什么?
谢谢
我们非常愉快地使用 dbeaver 和 Snowflake 后端,但我无法执行持续大约 5 分钟或更长时间的查询。
看起来某个地方出现了超时,并且执行似乎被 DBeaver 取消了。
错误消息为“SQL 错误 [604] [57014]:SQL 执行已取消”
知道如何指示 DBeaver 等待所需的一切吗?
我对 Postgresql 相当陌生(来自 SQL Server)
我偶然发现了那个包裹,它看起来很有趣。
将其永久保留在生产服务器上是一个好的做法吗?
一方面,我想知道在生产中实际加载我的系统的是什么。另一方面,我不想通过监视来加载我的服务器......