小编use*_*461的帖子

如何确保正在替换的表上的同步DDL操作?

我有多个进程在Redshift中不断刷新数据.他们启动一个事务,创建一个新表,COPY将S3中的所有数据放入新表中,然后删除旧表并将新表重命名为旧表.

伪代码:

start transaction;
create table foo_temp;
copy into foo_temp from S3;
drop table foo;
rename table foo_temp to foo;
commit;
Run Code Online (Sandbox Code Playgroud)

我有几十个表,我以这种方式更新.这很好但我希望有多个进程执行这些表更新以实现冗余,并确保数据相当新鲜(不同的进程可以同时更新不同表的数据).

它工作正常,除非一个进程尝试刷新另一个进程正在处理的表.在这种情况下,第二个进程被第一个进程阻塞,直到它提交,并且当它提交时,第二个进程得到错误:

错误:表12345由并发事务丢弃

有一种简单的方法可以保证我的进程中只有一个正在刷新表,这样第二个进程就不会进入这种情况吗?

我考虑为每个真实表创建一个特殊的锁表.在处理LOCK伴随真实表之前,该过程将使用特殊锁定表.我认为这会有效,但我想避免为每个表创建一个特殊的锁表.

amazon-redshift

7
推荐指数
1
解决办法
4945
查看次数

如何为AngularStrap或Angular UI Bootstrap Popover提供回调,以便在打开和关闭时执行?

我正在使用Angular UI Bootstrap popover(http://angular-ui.github.io/bootstrap/#/popover),并且希望指定一个回调函数在打开时执行,另一个函数在它关闭时执行.我的用例是我使用popover来包含数据网格的过滤器.我想在打开时加载一些远程过滤选项,仅在关闭弹出窗口时应用选定的过滤器.

该文档似乎只支持一些基本选项,但没有指示回调支持.我在源代码中也没有看到任何内容.我唯一的选择是设置一个间隔函数来定期检查弹出窗口是否在DOM中可见?

我也在考虑Angular Strap的popover来实现相同的结果,但似乎无法找到在那里设置回调的选项.

angularjs angular-ui-bootstrap angular-strap

2
推荐指数
1
解决办法
4344
查看次数