我测试MonetDB,却得到了令人惊叹的性能,而在我的笔记本电脑查询数百万行的。
我期待着与数十亿美元的生产工作,我需要尽可能多地更新数据,让说各1分钟或5分钟最坏的情况。 只需更新现有记录或添加新的,删除可以安排一天一次。
我已经看到了在我的测试中更新有不错的表现,但我有点担心了更多的三四倍数据相同的操作。
关于BULK INSERT,在5秒获得一个百万行,那么好足够的性能,现在也是如此。 我还没有试过删除。
除非你在同一时间更新的数据运行的查询一切工作正常,在这种情况下,一切似乎都被冻结了很长,很长一段时间。
那么,什么是得到MonetDB在后台更新的最佳策略是什么? 谢谢
你可以做每个负载在一个新的表具有相同的架构,然后创建一个VIEW
,工会它们放在一起。 查询将在视图上运行,删除并重新创建这种观点是非常快的。
但是,它很可能是最好的,然后现在合并一些较小的表一起每隔。 例如,夜间作业可以结合与上一交易日(S)所有负载表到一个新表(独立运行,没有任何问题),然后再重新创建视图。
另外,您也可以使用BINARY COPY INTO
加快在首位的加载过程。
有一个新的合并表functionnality可能取代汉纳斯Mühleisen答案的视图,并会更地道。 您可以附加/使用分离分区:
alter table mergedTable ADD/DROP table partitionTable
这将是有问题的更新,因为它们必须直接向分区表更容易,如果你有一个partitionning键(日期/ ...),但它与之前的解决方案相同。
文章来源: MonetDB refresh data in background best strategy with active connections making queries