【问题标题】:Import only latest changes from MYSQL dump file when importing导入时仅从 MYSQL 转储文件中导入最新更改
【发布时间】:2021-03-15 04:12:54
【问题描述】:

将 MySQL 转储文件从登台服务器数据库导入到我的本地数据库时,会花费太多时间,有什么方法可以从新的转储文件中仅导入当前本地数据库中不存在的最新更改.

【问题讨论】:

  • 没有这样的方式。全部导入。

标签: mysql database performance import


【解决方案1】:

您没有提供完整的信息。桌子有多大?你要换整张桌子吗?多张桌子?有FOREIGN KEYs吗?您是否担心阻止活动? “最新”是什么意思?

如果您要完全替换一张表(没有 FK):

  1. 将新数据加载到一个单独的表中。
  2. RENAME TABLE real TO old, new TO real;
  3. DROP TABLE old;

这不会加快速度,但实际上会消除对跑步台的任何干扰。

可以“增量”更新表格。

  1. 将新数据加载到一个单独的表中。
  2. INSERT/UPDATE/DELETE(3 个单独的查询)将新行放入表中。使用 SELECT ... LEFT JOIN 查看哪些行是“新/更改/已删除”。

如果您提供有关您的最终目标的更多详细信息,我可能会提供更多详细信息/提示。

【讨论】:

  • 感谢您提供此信息。是的,有多个表需要更新,也有外键,至于大小,一个表可以有 10000+ 行和 50+ 列,而在数据库中,总共有 140 个表。
  • 表大小只有几兆?整个数据库只有1GB左右?涉及哪种磁盘(HDD 与 SSD)? “太多时间”是什么意思?哪个语句大部分时间都在运行?
  • 表大小只有几兆:是的,整个数据库只有1GB左右:转储文件大小为1.8Gb,涉及哪种磁盘(HDD vs SSD):HDD, “太多时间”是什么意思:40Min,哪个语句在运行大部分时间:不知道确切
  • @akshayrathi - 1.8GB 需要 40 分钟,即使在 HDD 上似乎也很高。更多问题:RAM 大小、使用的引擎、innodb_buffer_pool_size 的值。
猜你喜欢
  • 2018-08-15
  • 2012-03-02
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2012-06-04
  • 2019-05-21
相关资源
最近更新 更多