【问题标题】:MYSQL take too much time for insertion recordMYSQL 插入记录需要太多时间
【发布时间】:2017-03-06 12:10:06
【问题描述】:

MYSQL 插入记录耗时过长
我有 32 GB RAM 专用服务器,它几乎不使用高达 15% 的 CPU 和 20% 的内存,即使同时执行 5 个 crons。 问题是,有一个 PHP 脚本有简单的 200 行代码和一些基本的计算和总共 3 个查询 选择并插入 12 列(4 为整数,8 为 varchar 数据类型)

每天执行一次,插入记录约280000到300000条记录,平均执行时间为5-6小时。

问题:

1) 为什么只插入 3 条缺失记录需要 5-6 小时?

2) 为什么它没有使用太多资源、RAM 和 CPU?

3) 有没有限制mysql执行的配置?

服务器详情: 总共 4 个处理器,每个处理器都有 Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz 高速缓存 8192 KB 32 GB 内存

请帮我解决问题

【问题讨论】:

  • 对于大型导入使用LOAD DATA INFILE。快得多。
  • 为什么?如果没有看到您的代码或插入的数据类型,我们怎么可能知道。可能是磁盘速度、网络速度、太阳斑......
  • 感谢 Daan,但我使用其他表进行计算和插入基于比,而不是从其他文件导入任何内容
  • 只需将所有内容写入脚本中的.csv 文件即可。完成创建 .csv 后,再执行 LOAD DATA INFILE
  • @DavidG 代码只有 200 行,对选定的数据进行了一些简单的减法和加法运算,然后插入到另一个表中,该表有 12 列,每列最多 200 个字符限制

标签: php mysql sql-server cron dedicated-server


【解决方案1】:

首先在YOUR表上创建INDEX。然后尝试执行这个查询

SELECT COLUMN1,COLUMN2..
FROM YOUR.

执行需要多少时间?记下该时间并记下同一查询的执行时间,而不在两个表上创建索引。 你肯定会得到更多的时机。 因此,它间接表明您要插入的数据更多地取决于获取它的速度。 因此,一旦 Fetching 速度很快,显然插入速度就会比前一个更快。

希望这会有所帮助。

【讨论】:

  • 谁告诉你的?你有没有尝试过?一旦获取速度明显快,它会使插入速度比上一个更快。
  • 然后请使用您的EXPLAINFULL QUERY 分享EXECUTION PLAN
猜你喜欢
  • 2012-01-13
  • 2020-06-15
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多