mysql - 庞大的 MySQL 数据库——该做什么和不该做什么?

标签 mysql database linux ubuntu

我有兴趣使用 MySQL 构建一个巨大的数据库(1 亿条记录),以包含 1 分钟间隔的股票数据。该数据库将包含 5000 只股票的数据,比如说 10 年。

两个问题:

(1) 过去,我有一个“插入速度慢”的问题——意思是,一开始插入速度还不错,但是随着表格被数百万条记录填满,插入速度变慢了(太慢了!)。当时我用的是 Windows,现在我用的是 Linux——这会有什么不同吗?

(2) 我知道有助于加快查询(数据检索)速度的索引技术。问题是,有没有办法加快插入速度?我知道可以在插入时关闭索引,但随后“构建”插入后的索引(对于数百万条记录!)也需要花费大量时间。有什么建议吗?

还有其他注意事项吗?在此先感谢您的帮助。

最佳答案

这取决于您需要什么类型的索引以及您如何生成数据。如果您对单个索引按时感到满意,请坚持下去,当您生成数据时,继续按升序插入(相对于您拥有索引的插入时间)。这样,插入期间所需的重新排序最少。此外,请考虑分区以优化您的查询。它可以显着提高性能。使用自增列可以帮助快速建立索引,但是如果自增列是唯一的索引,那么您将无法按时建立索引。确保使用 innodb 存储引擎以获得良好的性能。如果你在 Linux 上适本地调整你的数据库引擎并保持设计简单,它将顺利扩展而不会出现太多问题。我认为你所说的海量数据需求并不像最初看起来那么难构建。但是,如果您计划运行聚合查询(使用表连接),那么这就更具挑战性。

关于mysql - 庞大的 MySQL 数据库——该做什么和不该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973071/

相关文章:

从命令行备份和恢复 MySQL

mysql - 删除 MySQL 中的所有表约束

asp.net-mvc - 我可以将配置从 appsettings.json 移动到 ASP.NET Core MVC 应用程序中的数据库吗?

c++ - 转储内存以查找 C++ 应用程序中的内存泄漏

linux - 如果原始图像已被删除,如何查找并删除调整大小的 WordPress 图像?

linux - 如何链接 C 中的共享对象?

mysql - 如何合并2条sql语句并一次得到结果

php mysql 不再能够插入(错误的整数值 : '' for column 'id' at row 1 )

mysql - ssl-cipher 的规范是否足以保护 MySQL 客户端连接到启用 SSL 的 MySQL 服务器

php - 是否可以在没有默认数据库的情况下使用 Laravel 4