在 Mysql 提交期间,IO 等待导致速度下降(EXT4 JDB2 为 99% IO)

Phy*_*win 16 mysql linux performance python

我正在编写一个索引器,使用 python,它索引文档并将它们插入到数据库中,在它是单个进程之前,但现在我使用 4 个并行进程运行进行多处理。每次文本提取后,它插入到数据库中并进行提交。

现在遇到了IO问题,主要的IO问题不是我的进程而是EXT4的jdb2,journeling系统。它是在 99.99% 并且在每个 MySQL 提交时让 CPU 等待 IO。

我在互联网上看到很多人遇到这个问题,他们的解决方案是使用 barrier = 0 进行挂载。那会完全禁用日记功能吗?我的服务器有 UPS 并且很想这样做,我应该这样做吗?

Tom*_*Tom 7

将数据库放在非日志文件系统上。至少较大的服务器(oracle、sql server)有自己的日志功能(事务日志)并相应地优化它们的 IO。您在单独的文件系统和磁盘上拥有日志和数据库,并依靠数据库内部功能来处理错误的 IO。除了写入日期之外,通常没有(更大的设置)文件系统更改,因为文件不会扩展 - 它们将以其“最终”大小生成(好吧,管理员可以更改),并且更改正如我所说的由数据库跟踪级别的事务日志。

您可能还想告诉我们您的硬件层是什么。大多数人低估了IOPS是数据库的限制因素,认为小磁盘集是大数据库的合适环境。虽然我们中的一些人使用大量磁盘处理数据库,因此可能支持更高数量的 IOPS。


ada*_*ptr 0

您使用什么数据库引擎来插入这些数据?

如果是 MyISAM:则必须在写入期间锁定整个表,因此运行并发插入线程将杀死任何系统,无论系统多么强大。

确保您对这些表使用 InnoDB。