如何设计一个方便高效查询的大容量的数据库结构

jqrxgd 2013-05-23 11:45:38
我要建立一个有关飞机飞行仿真实验信息的数据库。每天上百次实验,每次实验上百条记录点信息来实时记录飞机的飞行情况。
每次试验包括的内容为试验序号,起点,终点,日期,飞行耗时。记录点信息包括试验序号,时间,飞行速度,飞行高度等等。
原始数据是用文本存储的。现在简单建立了两张表格,第一张用于存储所有的实验情况描述,第二张用于存储所有的记录信息描述。第二张外键指向于第一张表格。
现在存储了两个月的信息,试验内容表格记录达到了6万条,实验记录点信息记录已经达到了3百万条。

请问我现在的设计是否合理,应该如何更合理的设计数据库结构?
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2013-05-24
  • 打赏
  • 举报
回复
2个月才300万,那不算多 这个需求与一个生产测试结果表很类似: 测试表 测试结果明细表
唐诗三百首 2013-05-24
  • 打赏
  • 举报
回复
不建议用外键,高并发时可能有性能问题. 若要高效查询,应在相关字段上建索引. (但索引不是越多越好)
rumlee 2013-05-24
  • 打赏
  • 举报
回复
两个月才300万条记录,数据量不算大啊。表结构如何设计,要看你的数据分析模型。只要表结构和索引设计的合理的话,这么点数据量根本不会有问题。
hyrongg 2013-05-23
  • 打赏
  • 举报
回复
用2012 alwayson+archive机制, 超过1年的老数据转到archive 表或者库,基本上你这个量没问题了
發糞塗牆 2013-05-23
  • 打赏
  • 举报
回复
个人建议: 1、你要预估一下你的系统将要用多久,然后计算一下表的大小、库的大小。 2、要区分你的是OLTP还是OLAP类型。 3、如果2个月才300万,那不算多,一年就千万级别而已,一个表就算过亿也是可以承受的,根据你的需要,比如查询需要,如果经常需要查询一年,那按年来做表分区(2005及其后续版本才有),如果经常查询一个月,就按月来分区,对于分区,建议使用2008及以上版本,分区的数量会更多。 4、还是根据你的需要,如果不是每次查询都要查那么细,那你的设计还是可以的。如果每次都要那么细,可以考虑适当冗余一些字段到你的主表。 5、建议使用2008及以上版本,特别是2012的alwayson,可以很大程度分开读写操作,这个具体你可以到msdn找。如果是OLAP,2012可以提供列存储索引。查询速度奇快。如果结合分区,可以实现快速数据导入功能。 6、表中字段如非必要,不要存放太多数据到一个列,可以分开,不过这部分要按照业务需要,举个例子,存地址,如果你的系统每次都要完整地址,那么建议使用一列来存放,如果你经常需要统计省、市、区等,那么建议分开3个字段,这样可以减少字符串拆分的开销。 7、字段设计方面,使用足够的类型就可以了,比如字符型,别每次都用max。 8、tempdb要整大一点。 由于你的表就两个,所以也谈不上什么设计,更多是架构问题。
铁歌 2013-05-23
  • 打赏
  • 举报
回复
可以采用基于时间的大表分区创建表。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧