用于在 MySQL 中执行非常大 (20 GB) .sql 文件的更高速度选项

2024-01-02

为了响应政府的数据请求,我的公司收到了一个 20+ GB 的 .sql 文件。我没有太多选择来获取不同格式的数据,因此我需要选择如何在合理的时间内导入数据。我使用 Navicat 的批处理执行工具在高端服务器(Win 2008 64 位,MySQL 5.1)上运行它。它已经运行了 14 个小时,并且没有任何即将完成的迹象。

有谁知道此类交易有更高速度的选择吗?或者考虑到文件很大,这是我应该期待的吗?

Thanks


我猜你的意思是这是一个由mysqldump作为数据库的备份,因此它包含主要内容CREATE TABLE and INSERT声明。

(但严格来说,SQL 脚本可以包含任何内容,例如长时间运行的存储过程的定义和执行、导致死锁的查询等。我假设这是not案子。)

鉴于您有备份文件并且无法更改文件类型,您可以执行以下操作来加快恢复速度:

  1. 禁用外键检查:SET FOREIGN_KEY_CHECKS=0 http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_foreign_key_checks(记得重新启用 然后)。也禁用唯一检查:SET UNIQUE_CHECKS=0 http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_unique_checks

  2. 确保您的key_buffer_size http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_key_buffer_size如果使用 MyISAM 表,则设置得尽可能大。默认为 8MB,最大为 4GB。我想尝试 1GB。

    这些第一条建议来自 Baron Schwartz 的帖子:http://lists.mysql.com/mysql/206866 http://lists.mysql.com/mysql/206866

  3. 确保您的innodb_buffer_pool_size http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size如果使用 InnoDB 表,则设置得尽可能大。默认为 8MB,最大为 4GB。我想尝试 1GB。

  4. Set innodb_flush_log_at_trx_commit = 2 http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit如果您使用 InnoDB 表,则在恢复期间。

  5. @Mark B 在下面添加了一个很好的建议禁用按键 http://dev.mysql.com/doc/refman/5.1/en/alter-table.html在恢复期间。您可以这样做:

    ALTER TABLE <table-name> DISABLE KEYS;
    ...run your restore...
    ALTER TABLE <table-name> ENABLE KEYS;
    

    但该命令一次仅影响一张表。您必须为每个表发出单独的命令。也就是说,通常情况下,一个表比其他表大得多,因此您可能需要仅禁用该大表的键。

    另外,如果包含恢复的 SQL 脚本删除并重新创建表,这将避免禁用键。您必须找到某种方法来插入命令以在创建表之后和插入行之前禁用键。您可能需要发挥创意sed在将 SQL 脚本提供给 mysql 客户端之前对其进行预处理。

  6. 使用 Percona Server 版本的 mysqldump,以及--innodb-优化键 http://www.percona.com/doc/percona-server/5.5/management/innodb_expanded_fast_index_creation.html option.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于在 MySQL 中执行非常大 (20 GB) .sql 文件的更高速度选项 的相关文章

  • 在关系数据库中存储树结构的已知方法有哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • mysqli_stmt_bind_result 的奇怪问题

    好吧 这让我很烦恼 我似乎在 PHP 文档中找不到任何内容 在 Google resultosphere 中也找不到任何内容 所以也许有人可以在这里提供帮助 我正在使用准备好的语句 绑定结果 然后使用这些绑定结果来填充下拉列表 例子
  • mysql计算唯一行值

    TABLE quotation id clientid 1 25 2 25 3 25 4 25 5 26 如何查询有多少个不同的客户端TABLE quotation 我不希望重复的条目被计算多次 我需要的答案是2 在 1 行中 因为唯一的非
  • MYSQL 查询 WHERE IN 与 OR

    我开发了一个使用 OR 查询的系统 SELECT FROM tableA JOIN tableB ON idA idB WHERE idA 1 OR idA 2 OR idA 3 OR idA 4 OR idA 5 OR idA 100 与
  • 为什么涉及用户变量的表达式的求值顺序未定义?

    From MySQL手册 http dev mysql com doc refman 5 7 en user variables html以下查询的输出不保证始终相同 SET a 0 SELECT a AS first a a 1 AS s
  • MySQL 获取时间优化

    o我有一个包含 200 万个寄存器的表 但它很快就会增长得更多 基本上 该表包含具有相应描述符的图像的兴趣点 当我尝试执行选择在空间上靠近查询点的点的查询时 总执行时间花费太长 更准确地说 持续时间 获取 0 484 秒 27 441 秒
  • 使用 cfchart 标签在单个饼图中显示多个查询的数据

    请考虑以下代码 现在我的代码中有以下代码 cfm页面内的 tag DataSource xx xx x xx Name of the database sgemail Name of the relevant column event vc
  • grails/mysql 时区更改

    完成更改应用程序时区的最佳方法是什么 在我看来 必须发生以下情况 服务器 TZ 已被系统管理员更改 mysql必须重新启动 数据库中每个基于时间的列都必须使用convert tz 或等效方法更新所有值 因此 要么必须编写一个 mysql 脚
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • MySQL中如何存储小数?

    我尝试过将 DECIMAL 与 2 2 一起使用 但它不允许我使用它 我只想存储一个数字 例如 7 50 或 10 50 我需要将这两个数字保留在小数点后 但是当我刷新数据库时 它会将值重置为 0 99 有什么建议么 第一个参数DECIMA
  • INNER JOIN 后从多个表获取最大日期

    我有以下两个表 table 1 ID HOTEL ID NAME 1 100 xyz 2 101 pqr 3 102 abc table 2 ID BOOKING ID DEPARTURE DATE AMOUNT 1 1 2013 04 1
  • 无法在 Laravel 8 中运行迁移:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: 名称或服务未知 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我不明白为什么我的迁移在全新安装 Laravel 8 时失败 这就是我得到的结果 Illuminate Database
  • 在SQL中,如何通过查找与某一列相等的所有行来更新表的每一行,然后将另一列设置为彼此相等

    所以基本上这就是伪代码 但我不知道如何在 SQL 中执行此操作 请帮忙 for each row in table1 loop through each row in table 2 if table1 s row column 1 tab
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • MySQL 复制是双向的

    我们已经成功设置了 MySQL 文献中描述的主从复制 不过 我很好奇是否有人设置了双向复制 例如 如果安装了 Drupal 或 Wordpress 第一个 主 数据库服务器出现故障 第二个 从属 数据库服务器恢复正常 与此同时 用户不断进行
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐

  • javascript 中用于文件路径验证的正则表达式

    我似乎找不到可以测试以下情况的 JavaScript 正则表达式 c temp D 目录名 testing john desktop tempdir 你可以看到我要做什么 我只需要它来验证文件路径 但我发现的所有表达式似乎都不适用于 Jav
  • 保护对 Kafka Connect REST API 的访问

    Kafka Connect 的 REST API 不安全且未经过身份验证 由于它未经身份验证 因此任何人都可以轻松访问连接器或任务的配置 由于这些配置可能包含如何访问源系统 在 SourceConnector 的情况下 和目标系统 在 Si
  • Windows 中哪个进程是用户特定的?

    我想知道 Windows 中的哪个进程是特定于用户的 我的意思是它是为每个用户登录创建的 我尝试了 explorer exe 但是当您切换用户并登录新帐户时 它会在我的代码中显示旧的登录名 基本上我只需要记录在应用程序中登录的用户 如果您需
  • 在 Outlook 2016 中添加上下文菜单项

    在 Outlook 2007 中 当用户右键单击邮件项目时 以下代码将菜单项添加到上下文菜单中 然而在 Outlook 2016 中这不起作用 这段代码根本没有被执行 Sub Application ItemContextMenuDispl
  • Android,我看到堆在增长,但我希望它停止

    我看到我的堆不断增长 并且我知道它最终会在任何设备上崩溃 因为它一直在增长 Grow heap frag case 在整个日志中都可以看到 在我的手机上 当使用 32mb 时 应用程序就会崩溃 其他手机当然是 16mb 如果有那么少的资源运
  • 单击按钮即可更新 asp.net 表

    我是 ASP NET 的新手 遇到了一个非常愚蠢的问题 但我无法弄清楚 我有一个表单 由 page load 上的数据库数据填充 用户更新表单的输入文本并单击 更新 按钮 它会更新 但会使用旧数据进行更新 为什么要用旧数据更新它 这是asp
  • 轨道 HAML 表格

    我目前正在尝试将 ERB 布局转换为 HAML 这是我不断收到的错误 index html haml 18 syntax error unexpected n hamlout format 这是 HAML 页面 row fluid span
  • 如何配置log4j只保留最近7天的日志文件?

    我在使用多个 Java 应用程序时遇到以下日志记录问题log4j用于记录 我希望日志文件每天轮换 例如 log 2010 09 10 log 2010 09 09 log 2010 09 08 log 2010 09 07 log 2010
  • 将单元测试添加到遗留代码[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您是否曾经在事后向遗留代码中添加过单元测试 代码有多复杂 存根和模拟所有内容有多困难 最终的结果值得吗 我发现最好的方法是逐步添加单元测试 而不
  • 如何在 Windows 上的 Perl 中将具有 UTF-8 文件名的文件复制到另一个 UTF-8 文件名?

    例如 给定一个空文件 txt 我该如何制作一个名为 txt copy 我第一次破解它设法访问该文件并创建新文件名 但生成的副本 txt copy 这是我的第一次尝试 usr bin env perl use strict use warni
  • d3 onclick 获取具体路径/栏参考

    如果我有 d3 dc 图表 并且我设置了一个单击事件处理程序 如下所示 var data city New York neighborhood N A hits 200 city New York neighborhood Brooklyn
  • 通过键合并数据框中的行

    如果我有一个带有关键列和数据列的数据框 就像这样 df lt cbind key c Jane Jane Sam Sam Mary var1 c a NA a a c var2 c NA b NA b d key var1 var2 Jan
  • 添加 IIS UrlRewrite 似乎会破坏本地 IIS 服务器上的调试

    这个问题让我发疯 我正在开发一个最近创建的项目 突然我无法调试该特定项目 我使用带有 IIS UrlRewrite 2 模块的本地 IIS 7 5 我的开发机器是 Windows 7 x64 带有 Visual Studio 2010 Pr
  • Visual Studio 2010 中 applicationhost.config 的 IIS Express 路径

    有没有办法告诉 Visual Studio 2010 在启动 IIS Express 时对 config 参数使用什么值 使用 Process Explorer 我可以看到 iisexpress exe 进程由 Visual Studio
  • CUDA中x方向的索贝尔滤波器

    我正在尝试在每个像素的 x 方向上对灰度图像应用索贝尔滤波器并显示结果 X 方向索贝尔滤波器为 1 0 1 2 0 2 1 0 1 我没有得到所需的结果 有人可以指出我的错误吗 我正在尝试使用纹理 但我不太确定我是否正确使用了它 inclu
  • 如何以树形视图显示消息回复? Java 和休眠

    我有消息 需要显示十个 例如 第一个 根 回复以及对其自身的所有回复 并且它应该看起来像一棵树 标准消息和树状回复视图 你知道 所以 问题是 如何从数据库获取它 我正在使用休眠 据我所知 它将需要很多时间 递归地检索整个集合本身以及所有子树
  • Emacs - 如何避免或替换错误的字符编码?

    假设我收到用 MS Word 编写并保存为纯文本 txt 的西班牙语文本 不幸的是 所有的西班牙口音都是这样显示的 Un 372ltimo an 341lisis 谁能告诉我如何避免这种情况 或者至少如何替换这些字符 替换正则表达式函数根本
  • PHP - 验证函数返回 true | false,如果 false 则返回一条消息

    我有一个验证函数 它返回true or false 但是 我希望它提供以下信息问题是什么 当有一个时 假设这个函数是这样的 function is valid val result true if rule 1 not met result
  • 在 Visual Studio 中运行多个 NUnit 项目

    我有一个包含多个项目的解决方案 包括 NUnit 测试项目 所以解决方案看起来像这样 使用通用名称 这些不是实际名称 Solution Project1 Project1 Test Project2 Project2 Test Projec
  • 用于在 MySQL 中执行非常大 (20 GB) .sql 文件的更高速度选项

    为了响应政府的数据请求 我的公司收到了一个 20 GB 的 sql 文件 我没有太多选择来获取不同格式的数据 因此我需要选择如何在合理的时间内导入数据 我使用 Navicat 的批处理执行工具在高端服务器 Win 2008 64 位 MyS