2010-11-28 107 views
2

我想在MySQL中创建一个数据库表来存储我的产品统计数据。几乎每一天的统计数据都应该在数据库中。问题在于速度。在MySQL中存储大量数据?

目前我储存,每个产品,这些值: 时间,售出一件商品,PRODUCT_ID,HIT,OTHER_ID

我认为两种不同的方式来存储DATAS:

  • 一天一天在一排(连载)
  • 岁岁每个产品在一排(连载)

或你的想法每个产品?

速度测试,我没有那么差,差不多好。但你对这个问题有更好的想法或经验?

+0

多少数据,例如多少行?你能否以批处理模式加载(可以更快)还是需要实时查询?你将对数据运行什么类型的查询? – 2010-11-28 16:13:23

+0

这是什么目的?最后,你想用数据做什么?双?数据挖掘?只是显示他们...? – Spredzy 2010-11-28 16:14:52

回答

6

确实取决于您的报告需求 - 即,如果您只按产品/日报告,那么将事务统计信息作为批处理过程的一部分滚动到汇总表中是有意义的。在任何情况下,我建议将您的交易数据和您的报告数据分隔到一个单独的数据库中,这样您可以优化用于写入的事务数据,并优化报告数据库的读取操作(并且不需要大型报告粉碎你的交易处理能力)。

1

我假设你只在静态数据库中使用该数据库,而且它的交易存储在第一位的数据库不同。可发生

速度问题:

  • 当您将数据插入到数据库
  • 当你(从Web应用程序即)查询数据库

有你的数据库专用统计它有理由开始设计你想要制作的报告;这样你可以定义:

  • 你要插入到数据库
  • 你要对数据库执行

勾画出在Excel报表中的查询数据(但你可以真正使用任何工具)并用假数据填充报告是了解你想实现什么的一个好想法。

当你高兴与因此你可以找出你需要挤进数据库中的数据,你必须实现查询,并与你想给你的用户,如果报告中的作用任何。

如何使用数据

  1. 在第一个地方填写你的数据库,你可能有一个大的和详细的大写金额的数据,如描述购买一排。开始查找尺寸,这些尺寸在您的报告中实际上很有用;一个尺寸是你所关心的尺度,就像你卖什么,谁是原来卖了它。
  2. 对于每个维度,找到您想要在报告中使用的最小细节级别:您是关心购买的小时数还是仅仅是一年?你关心销售产品的类别还是只关注其SKU?

这会告诉你你必须从原始数据库转移到统计数据的数据。

如何让您的数据是最新的

这在很大程度上取决于你想如何频繁的统计数据进行更新。您可以设置一个触发器,实时更新您的统计数据库或定期运行脚本以升级您的统计数据库。

注意

  1. 每当原始数据库在其架构更改,或者更加微妙的是存储数据的方式,你必须在考虑如何在您的更新程序(触发这些变化的影响或外部脚本)
  2. 如果你的统计信息有一定的交互性(例如,来自Web应用程序),我建议使用Data Cubes来定义你的统计数据库。
  3. 请记住,您无法轻松地对序列化数据进行排序,选择或分组。
1

解决这个问题作为一个数据仓库/数据集市解决方案(星型/雪花架构)与汇总(汇总/物化视图),如表来减少复杂的长时间运行的查询更快简单的SELECT语句。

建议批量加载数据到一个临时(临时)模式,清洗,验证和填充你的事实和维度表:)之前它映射