gpt4 book ai didi

performance - mysqldump 大MyISAM表启动快突然变慢

转载 作者:行者123 更新时间:2023-11-29 23:23:34 24 4
gpt4 key购买 nike

为包含 innodb 和 myisam 表的数据库调用 mysqldump。当涉及到 11GB 大小的胖 MyISAM 表时,转储仍然运行得非常快。快速意味着 iotop 向我展示了超过 70MB/s 的写入性能。我在 mytop 中查看该过程,因此我知道它发生在一张大 table 上。转储文件增长到 8GB,然后 I/O 突然只有大约 1 MB/s。

服务器负载正常,没有其他进程在运行。尝试更改 my.cnf 设置但没有任何效果。

最佳答案

性能取决于几个因素。

我必须创建 an alternative solution to Mysqldump让客户端加载 42GB 转储文件(超过 10 亿行)

仅供引用:最初,MySQLDump 在具有 64Gb RAM 和 10 磁盘 SSD 阵列的 16 核服务器上花费了 3.9 天。

使用uniVocity我们使用一台使用了 3 年的笔记本电脑,在 90 分钟内加载了相同的数据。您可以使用 30 天的评估许可证来加载它。

除此之外,以下是一些可能影响性能的因素:

检查转储文件中是否有此内容以禁用约束:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'

如果它没有添加它们或更改创建表脚本以删除所有约束。如果您在运行转储加载时启用了约束(主键、外键等),则该过程随着时间的推移,速度会变慢,因为数据库将根据越来越多的可能性(更多的 PK 和 FK)来验证每次插入时的这些约束。

如果您使用 InnoDB(不完全是您的情况,但它可能对其他人有帮助),请将其添加到您的 my.cfg 文件中:

innodb_doublewrite = 0
innodb_buffer_pool_size = 8000M
# innodb_log_file_size = 512M - If I enable this one the server won't start. Couldn't identify why.
log-bin = 0
innodb_support_xa = 0
innodb_flush_log_at_trx_commit = 0

关于performance - mysqldump 大MyISAM表启动快突然变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27117906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com