pressão de retorno do tubo shell semelhante a "pv"

0

Eu tenho um arquivo shell como este:

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

O problema que tenho é que o MySQL obtém muitas inserções e ele fica muito lento (o banco de dados é principalmente somente leitura e isso é apenas uma inserção).

Eu quero ter algo que possa diminuir a velocidade da "largura de banda" do pipe de controle, semelhante a este:

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

Aqui gzip -9 | gunzip irá desacelerar o processo e a pressão para o MySQL será baixa.

O comando

pv tem habilidades como essa, mas é um comando interativo. Eu estou procurando por algo não interativo.

    
por Nick 29.10.2015 / 15:53

2 respostas

2

Você deve usar pv com a opção -q , que está no manual:

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

Portanto, usar o comando grep 'INSERT INTO container' $file | pv -L 100 -q | mysql database -f deve fazer o que você deseja. Talvez 100 seja muito lento, mas você pode colocar 5k ou mais se quiser.

    
por 29.10.2015 / 16:07
1

Você pode usar insert-delayed (descontinuado na versão mais recente) link

    
por 29.10.2015 / 16:18

Tags