壳管背压类似于“pv”

壳管背压类似于“pv”

我有如下 shell 文件:

grep 'INSERT INTO container' $file | mysql database -f

我遇到的问题是 MySQL 插入太多,导致速度变慢(数据库大部分是只读的,而这只是插入)。

我想要一些可以减慢速度/控制管道“带宽”的东西,类似于这个:

grep 'INSERT INTO container' $file | gzip -9 | gunzip | mysql database -f

这里gzip -9 | gunzip将会减慢进程并且对 MySQL 的压力将会较小。

pv命令恰好具有这样的功能,但它是交互式命令。我正在寻找非交互式命令。

答案1

-q您应该使用手册中给出的选项 pv :

-q, --quiet
    No output.  Useful if the -L option is being used on its own to just limit the transfer rate of a pipe.

因此,使用该命令grep 'INSERT INTO container' $file | pv -L 100 -q | mysql database -f应该可以达到您的要求。也许 100 太慢了,但如果您愿意,您可以输入 5k 或更多。

答案2

您可以使用插入延迟(最新版本已弃用) http://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html

相关内容