数据库容量的问题,上亿条数据。救急!!!!(200分)

  • 主题发起人 主题发起人 蛮牛野蛮牛
  • 开始时间 开始时间

蛮牛野蛮牛

Unregistered / Unconfirmed
GUEST, unregistred user!
[8D]
最近写一个关于数据采集的程序, 总共有6000个采集点,每个采集点每隔一分钟就采集
数据保存,那么,一天的数据量是6000*24*60=8640000,一个月的数据是8640000*30/5=
51840000条数据(5分钟一个统计值),一年的数据大约6亿条数据。数据只是保存本年度
的。一条记录大概6字段,3个是浮点类型。2个字符类型。

现在采用MS SQL 2000标准版,是否可以呢?如果不行,请提供一个好的解决方案。
我看MS SQL 2000这个版本是GB级,请问含义是什么?如果是文件大小那和记录有什么
换算关系。
 
上亿条记录用 Oracle 和 MS-SQL 2000都可以应付,但关键还是要看
你的硬件情况如何,特别是要有海量的内存,多 CPU 及 高速的磁盘系统。

-------------------------------
MS SQL 2000标准版只支持最多 4 个 CPU 和最多 2GB 内存,企业版则
可支持最多 32 个 CPU 和 64 GB内存。
 
硬件是P 4 机器,不是服务器,查询的数据量不大,大概一次查询上万条,但是关键是要
保存上亿条记录。

我看MS SQL 2000标准版是GB级,GB指的是什么?如果是文件大小那和记录有什么
换算关系。
 
Sql 2000 我還沒測試過, 7.0 在 P3 1.2G 128M內存的機器上 到 7xxx萬條左右就
會明顯變慢
如何規劃數據結構是很重要的一環,通通放在一個表不是好注意,因為這些應用建立
Index是肯定要的,建Index後,數據量越大Insert數據的消耗就越大,到一定時候一分鐘
Insert不完6000條數據都有可能.
如何分表保存要看你的需求,每天一表,每月一個表,或每個採集點一個表都可以,按你
統計需求來做決定
常用的統計結果可以放到固定表中保存也是一個好方法
如果你的硬件足夠好,可以不考慮上面的方法.但你可能要越過SQL語句,改用數據庫
的大數據量提交解決方案如 SQL Server 的 DTS,這玩意用的好,可以一秒提交5000條
數據.
如果你怕麻煩,可以看看 SQL Server的 BULK INSERT 語句,也很好用










 
如果我分成多个库呢,总数还是6亿条,和一个库总数6亿条性能有何区别呢?
 
数据的保存肯定不是问题
600M * 每条记录的大小 = 你的数据库文件大小
关键在于存取速度,要看你的业务是怎么做的了
这些数据要怎么使用直接影响你对数据的安排(表分区等)
 
分批存,每个月一个数据表,然后备份后,删除,保留几个月的,查的时候再拷贝进去.
最好看看数据仓库的解决方案,可以每个月统计一些你需要的信息在一个表里,然后在
查询这个表就行了
 
分庫不好,難管理,還會降低速度
如xianjun所說,我們不需要考慮空間問題,而是考慮查詢的問題
分表存放的目的是,不是說一個表放不下數據(Sql server 2000 中
表可放下的數據量取決于硬盤空間) 而是優化查詢速度.
例如,妳90%的日常查詢操作都是日數據查詢,那麼妳就可以按日來分表
從2億條數據里查一萬條 和從一百萬條里查一萬條,那個快就不用我說了吧
但分表的效果取決于妳的規劃,假如你的規劃導致跨表查詢多于單表查詢
那還不如放在一個表裡面快

 
我其实就是按照每日的数据存的,所以每个表的数据量不会很大,我所担心的就是在
数据量大了以后,速度慢的要死。

我还要从多个地方收去数据。每分钟要忘库里面插入很多数据.
 
最好双机备份!
 
对于Oracle有一个数据表分区的策略,当一张表的数据量达到一定程度时,系统会自动
分割数据表,可以提高表处理速度,但这一切对用户是透明的,Sybase也有这功能,不过要自己去设置,而且
烦死了。
 
上亿条数据? 就不该用MS的产品了吧
建议重新选择操作系统和数据库,顺便也重新选择好网名 [:D]
 
1M=1百万, 1G=1000M=10亿,
1年 6亿=600M=0.6G,
实际容量=0.6*记录长度
3个是浮点类型。2个字符类型,应该还有1 个时间,也是个浮点数,
real=8 字节,char 1字节,
所以,实际容量=0.6*(4 * 8 + 2)=0.6*34=20.4 GB
一般还要加上索引容量,看具体索引情况计算。
 
为什么我无法分配分数。无法保存数据也。
 
大家的意见都有道理!
 
昏倒!混分的还装着一付官腔!我吐。。。吐。。
 
多人接受答案了。
 
后退
顶部