首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理数十亿行仿真结果和分区的策略

处理数十亿行仿真结果和分区的策略
EN

Database Administration用户
提问于 2013-07-05 09:35:17
回答 2查看 426关注 0票数 4

我试图想出一种从dba的角度来处理统计模拟结果的好方法。我们每天生成大约5亿行,其中大部分是“垃圾”(即结果被视为和丢弃的不是我们寻找的东西),有些需要保存。在分区之外与他们打交道是很困难的。

数据目前主要在3个表层次结构中(贸易--订单-更新),其中的交易有多个订单,每个订单得到多个更新。第四个表(参数)包含每个模拟的参数。这是小的,但没有问题。

现在,我们将数据写入3个暂存表,并在那里进行分析--临时解决方案。

我想请一些人来回顾一下这个想法。

  • 用x“桶”划分暂存表。一个模拟分配一个桶(smallint)广告,然后写到这个桶中。这允许快速删除模拟。由于我们每周只运行大约100个模拟,在表上设置1000-20000分区就足以在需要时保留数据(初始审查)。
  • 当数据正常时,我们将其从暂存(通过存储过程)转移到最终的数据仓库表。同样,我们需要对它们进行分区,我们将使用类似的桶方法。由于多个模拟将遇到相同的桶(更新数据),这是一个相对较少的桶。

有人做过吗?

桶方法的思想是,我可以预生成桶,而不必修改分区函数。遗憾的是,与Oracle相反,SQL Server没有自动分区,否则我可以使用一个简单的ID字段。我真的尽量避免在这里动态修改分区模式。通过这种方式,我可以拥有一个简单的smallint "bucket id",这是一个准备好的分区模式,并且基本上可以分配每个模拟/运行一个桶id -easy来加入。有底片吗?

EN

回答 2

Database Administration用户

发布于 2013-10-22 00:41:51

我们做的事情和点击流数据没有什么不同。我们拔掉了SQLServer,并插入了Vertica (一种符合ANSI标准的列式分析软件ANSI兼容的关系数据库管理系统).我们从未回头。多分钟查询下降到数千秒,数据负载从小时下降到秒。如果/当您开始增长超过它,添加更多的节点,并重新平衡在线。做得很好的产品。

Community对3个节点和1Tb数据是免费的(它比您预期的要压缩得多,所以1Tb是相当多的数据),商业版本(无限节点)大约是TB大小数据的SQLServer EE成本的一半(它是由数据大小授权的)。你也许想看看它。;-)

顺便说一句,我与Vertica或HP没有任何联系,我只是一个非常高兴的客户/数据架构师。

干杯,戴夫·西斯克

票数 1
EN

Database Administration用户

发布于 2014-01-22 20:20:39

Vertica不删除数据!它标记它,并在运行合并时删除数据。为了让您更好地理解,Vertica不会覆盖它创建的数据文件,所以大型表上的小删除没有那么好。当然,您可以使用为delete操作调优的高级投影,但这也取决于此。最好的解决方案是创建数据并将其加载到分区中,并在完成处理后删除分区(这将是一个物理删除,因此非常快速)。不要将Vertica用于高事务性环境。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/45768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档