在对表进行重新排序时避免写冲突

布拉德·香川

我有一张大桌子,需要定期重新排序。我部分基于此建议,因为我插入的数据顺序(按时间)与我需要的群集方式(按ID)不同(我按顺序插入),因此建议不要使用群集键,这可能导致重新群集以获取有点失控。

由于我每小时写入一次表,因此要警惕这两个过程相互冲突的问题:如果我将CTAS转换为新排序的临时表,然后交换表名,那似乎就像是我打开了写信的大门源表不能进入临时表。

我认为我可以在重新排序时触发一个标志,从而导致ETL暂停写入,但是这似乎有点hacky,而且可能很脆弱。

我当时正在考虑利用锁定和事务,但这似乎不是正确的用例,因为我不认为我在写新表时会锁定要复制的表。有关如何处理此问题的任何建议?

大卫·加里森

有一些避免自动重新聚类的原因,但是基本上与您不应该建立作业来频繁重新聚类的原因完全相同。您正在使数据库完成所有相同的工作,但没有内置的管理功能。

如果您的表足够大,可以看到按时间进行群集的性能问题,并且您知道ID列是此表(在JOIN和WHERE子句中)被过滤的主要方式,那么这可能是自动选择的一个很好的选择。聚类。

因此,我建议至少测试一下ID上的群集密钥,然后监视/比较性能。


为了简短地回答关于没有冲突的求助问题,我可能建议您使用时间列对早于给定时间的记录(可能在单独的表中)进行重新排序。在排序时,您可能会得到一些新记录。但是您将能够使用该时间列将那些新记录与现在已排序的旧记录结合起来。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python 在对字典进行排序时出错

使用分段控件对表进行重新排序

numpy排序在对熊猫DataFrame进行排序时表现怪异

如何在对数据进行排序时更新 RecyclerView?

在对元组列表进行排序时的多个需求

在对帧进行排序时使用 try 语句

使用拖放和jQuery对表列进行重新排序

javascript-对表进行排序后重新获得加载功能

尝试自己对表格进行排序时,我不断在数字和零之间进行比较

ggplot无法重新排序时对条形图进行排序

在对表格进行排序后,如何添加列并用数字填充?

在对表格进行排序后,如何在单击表格列引用时动态渲染图像

如何对表格重新排序

对表格进行排序时,第一列中的按钮消失

为什么在尝试对表进行排序时出现错误:“超出了最大更新深度”?

在对公式产生的值进行排序时,VBA排序无法正常工作

在对元组进行排序时忽略不可排序的数据类型

在对Angular Material表进行排序时,可以查看数据而不进行修改吗?

MySQL如何在对查询结果进行排序时进行分组?

对表格进行排序C ++

在进行重新排序时尝试在集合视图上开始重新排序

在对整个范围进行排序时,std :: partial_sort()与std :: sort()的性能比较?

为什么在对std :: string进行排序时C ++ 11 std :: sort()不会更快?

java-在对整数堆栈的数组列表进行排序时遇到问题

Java Collections.sort在对字符串列表进行排序时返回null

在对字典列表进行排序时,如何用operator.itemgetter忽略None值?

在对可迭代对象进行排序时,Python如何打领带

在对数组元素进行排序时某些输入上的ArrayIndexOutOfBoundExceptions吗?

在对使用SeqIO解析的fasta文件进行排序时使用“ NotImplementedError:SeqRecord”