【问题标题】:Inserting 1 million records in mysql在mysql中插入100万条记录
【发布时间】:2017-01-31 23:18:03
【问题描述】:

我有两个表,在这两个表中我得到 100 万条记录。而且我每晚都使用 cron 作业来插入记录。在第一个表中,我首先截断表,然后插入记录,在第二个表中我正在更新并根据主键插入记录。我正在使用 mysql 作为我的数据库。我的问题是我每天都需要执行此任务,但我无法插入所有数据。那么这个问题的可能解决方案是什么

【问题讨论】:

  • 您可以通过一些细节逐步找到解决方案。上面没有看到。
  • "但我无法插入所有数据" 为什么?

标签: mysql sql ruby-on-rails ruby


【解决方案1】:

重要的是在发布数据时触发所有类型的操作和检查 MySQL 想要执行的操作,如自动提交、索引等。

https://dev.mysql.com/doc/refman/5.7/en/optimizing-innodb-bulk-data-loading.html

因为如果你不这样做,MySQL在每添加一条记录后都会做很多工作,并且在处理过程中会累加起来,导致最后处理和导入很慢,并且可能无法完成一天。

【讨论】:

    【解决方案2】:

    如果你必须使用 MySql :对于第一个表,禁用索引,执行插入,而不是启用索引。这样会更快。

    或者 MongoDb 会更快,而 Redis 非常快。

    【讨论】:

    • 如果 Rails 用户要从 MySQL 切换数据库,他们首先想到的应该是 PostgreSQL。但这似乎是相当不成熟的建议。
    • 我的主要建议是禁用索引。这是一个很好的选择,因此投票给我并不酷。 PostgreSQL 没有 MySql 快多少,Redis 是。取决于您的需求,它可能是一个很好的解决方案。特别是对于临时数据(如本例)。
    • 我不知道为什么你被否决了,或者谁对你投了反对票。我认为目前尚不清楚 OP 有什么问题......也许这是一个性能问题,但目前这是一个非常低质量的问题(我 否决了)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2019-06-19
    • 2018-11-19
    • 2012-05-16
    相关资源
    最近更新 更多