我试图想出一种从dba的角度来处理统计模拟结果的好方法。我们每天生成大约5亿行,其中大部分是“垃圾”(即结果被视为和丢弃的不是我们寻找的东西),有些需要保存。在分区之外与他们打交道是很困难的。
数据目前主要在3个表层次结构中(贸易--订单-更新),其中的交易有多个订单,每个订单得到多个更新。第四个表(参数)包含每个模拟的参数。这是小的,但没有问题。
现在,我们将数据写入3个暂存表,并在那里进行分析--临时解决方案。
我想请一些人来回顾一下这个想法。
有人做过吗?
桶方法的思想是,我可以预生成桶,而不必修改分区函数。遗憾的是,与Oracle相反,SQL Server没有自动分区,否则我可以使用一个简单的ID字段。我真的尽量避免在这里动态修改分区模式。通过这种方式,我可以拥有一个简单的smallint "bucket id",这是一个准备好的分区模式,并且基本上可以分配每个模拟/运行一个桶id -easy来加入。有底片吗?
发布于 2013-10-22 00:41:51
我们做的事情和点击流数据没有什么不同。我们拔掉了SQLServer,并插入了Vertica (一种符合ANSI标准的列式分析软件ANSI兼容的关系数据库管理系统).我们从未回头。多分钟查询下降到数千秒,数据负载从小时下降到秒。如果/当您开始增长超过它,添加更多的节点,并重新平衡在线。做得很好的产品。
Community对3个节点和1Tb数据是免费的(它比您预期的要压缩得多,所以1Tb是相当多的数据),商业版本(无限节点)大约是TB大小数据的SQLServer EE成本的一半(它是由数据大小授权的)。你也许想看看它。;-)
顺便说一句,我与Vertica或HP没有任何联系,我只是一个非常高兴的客户/数据架构师。
干杯,戴夫·西斯克
发布于 2014-01-22 20:20:39
Vertica不删除数据!它标记它,并在运行合并时删除数据。为了让您更好地理解,Vertica不会覆盖它创建的数据文件,所以大型表上的小删除没有那么好。当然,您可以使用为delete操作调优的高级投影,但这也取决于此。最好的解决方案是创建数据并将其加载到分区中,并在完成处理后删除分区(这将是一个物理删除,因此非常快速)。不要将Vertica用于高事务性环境。
https://dba.stackexchange.com/questions/45768
复制相似问题