我有兴趣使用MySQL构建一个庞大的数据库(100万条记录),以1分钟的间隔包含库存数据。该数据库将包含5000个股票的数据,比如10年。
两个问题:
(1)在过去,我遇到了“插入缓慢”的问题 - 这意味着,一开始插入速度很好,但随着表格填满数百万条记录,插入变得缓慢(太慢了!)。那时我使用的是Windows,现在我使用Linux - 它应该有所作为吗?
(2)我知道有助于查询(数据检索)更快的索引技术。问题是,有没有办法加快插入?我知道可以在插入时关闭索引,但随后在插入后“构建”索引(数百万条记录!)也需要花费大量时间。有什么建议吗?
其他任何做什么/不做什么?提前感谢您的帮助。
答案 0 :(得分:2)
这取决于您需要什么类型的索引以及如何生成数据。如果您对单个索引按时满意,只需坚持下去并在生成数据时,继续按升序插入(相对于您拥有索引的插入时间)。这样,在插入期间所需的重新排序是最小的。另外,请考虑使用分区来优化查询。它可以为您带来显着的性能提升。使用自动增量列可以帮助快速索引,但如果自动增量列是唯一的索引,则不会按时获得索引。确保使用innodb存储引擎以获得良好的性能。如果您在Linux上正确调整数据库引擎并保持设计简单,它将顺利扩展,没有太多问题。我认为你所谈论的巨大数据要求并不像最初看起来那么难。但是,如果您计划运行聚合查询(使用表的连接),那么这更具挑战性。
答案 1 :(得分:0)
您始终可以将数据保存在没有索引的表中,然后使用Lucene(或类似的)来索引数据。这将保持快速插入,并允许您查询Lucene以进行快速数据检索。
答案 2 :(得分:0)
考虑使用SSD驱动器(或阵列)来存储数据,特别是如果您无法负担创建带有内存的盒子的情况。关于它的一切都应该更快。