要为公司建立一个股票历史数据库, 主要用来查询,当然还有数据的更新,插入
基本上是近几年的历史数据,记录的是每分钟的数据,每条记录包括时间,价格,成交量等,一年每只股票就有数十万条记录。股票加上外汇基金等有数万只,
比较容易想到的两个方案:
1、建一个数据库,把这些历史数据都放在一个表里, 数据量太大
2、为每个股票单独做表,表太多了
大家都投个意见吧,谢谢了
基本上是近几年的历史数据,记录的是每分钟的数据,每条记录包括时间,价格,成交量等,一年每只股票就有数十万条记录。股票加上外汇基金等有数万只,
比较容易想到的两个方案:
1、建一个数据库,把这些历史数据都放在一个表里, 数据量太大
2、为每个股票单独做表,表太多了
大家都投个意见吧,谢谢了
解决方案 »
- mysql中自增类型的问题。
- mysql,用命令如何設置編碼類型?
- AUTO_INCREMENT的Key删除了数据计数不回滚怎么办?
- 如何插入一条记录后返回该记录的ID号(分不够再加)
- 中文问题!急
- -------------???columns used 和available columns 是什么意思????-------------
- mysql的auto_increment列的值最大可有多大?
- 关于mysql中varchar字节问题
- 这句sql语句查询时间很长(3秒多),请问怎么优化?
- 使用管理员账号启动MySQL拒绝访问
- Mysql中数据库中存放的格式GBK?UTF8?
- mysql命令行或者sqlyog/sqlbrowser等客户端中如何执行循环?
似乎MYSQL不适合这么大的数据量
如果查询都是基于 select * from tbl where data between xxx and yyy and stockid=123这样,你可以使用方案二。不过仍然建议你使用时间做为分区表。
但你 股票加上外汇基金等有数万只 20000 * 30MB = 600GB 。这个数据库不算小了。 如果你的需求仅是 主要用于查询某只股票某个时间段数据的查询
则你还不如直接用数据文件来存储,一个股票一个文件,这样速度可以达到最快。
主要用于查询某只股票某个时间段数据的查询------------------------------------
按时间分表即可,每表按股票代码建立索引
因为你是以查询为主,可以在架构上建立master-多slave的架构,再结合lvs访问多slave,这样的架构扩展性强,很容易满足扩展你查询的容量负荷。
备注:可以考虑先创建好5-10年的分区(或者写个 SHELL脚本自动创建)
若是决定不够细分:再月创建子分区,分为两级分区
或者按年分表,再按月创建分区3.使用分区或分表的好处,可以方便地定期删除多少年前的数据