Percona Toolkit使用测试(5)PT-FIFO-SPLIT

pt-fifo-split 不使用真正的拆分,将文件和管道分裂到FIFO
pt-fifo-split将文件和管道拆分到FIFO,没有文件,或文件为-时,读取标准输入.
在不进行物理拆分的情况下,以百万行为单位读取hugefile.txt:
Percona Toolkit使用测试(5)PT-FIFO-SPLIT
该工具可用于 把大批量的sql语句进行拆分

pt-fi -split允许您从文件中读取数据,就好像它只包含文件中的一些行一样。当你再读一遍时,它包含了下一行;当您遍历它结束时,文件就消失了。这只适用于类unix操作系统。

您可以在命令行上指定多个文件。如果不指定任何,或者使用特殊的文件名-,则从标准输入读取行。

原理:
pt-fifo-split按照我们设定的行数,假如是30,那么pt-fifo-split就每次从源文件取30行到–fifo指定的临时文件中,然后我们通过脚本读取这个临时文件(默认/ tmp / pt-fifo-split),当临时文件被读取后,pt-fifo-split又会再次从源文件取30行放入–fifo指定的临时文件(/ tmp / pt-fifo-split)中,我们再次去–fifo指定的临时文件中取数据, 依次迭代,直到文件所有行被截取完,达到文件分割的目的。

参数

这个工具接受额外的命令行参数。
- -config
读取这个逗号分隔的配置文件列表;如果指定,这必须是命令行上的第一个选项。
- -fifo
类型:字符串;默认值:/ tmp / pt-fifo-split
可以从中读取行的fifo文件的名称
- -force
如果fifo已经存在,则删除它,然后再次创建它。
- -help
帮助并退出
- -lines
类型:int;默认值:1000
每个块中要读取的行数。
- -offset
类型:int;默认值:0
从第n行开始。如果参数为0,则将所有行打印到fifo。如果1,则从第一行开始,打印行(与0完全相同)。如果2,则跳过第一行,并将第2行和后续行打印到fifo。
- -pid
创建给定的PID文件。如果PID文件已经存在并且其中包含的PID与当前PID不同,则该工具不会启动。但是,如果PID文件存在并且其中包含的PID不再运行,则该工具将用当前PID覆盖PID文件。当工具退出时,PID文件将自动删除。
- -statistics
打印块之间的统计数据。统计数据包括块的数量、行数、运行时间和最后一个块中每秒的行数。
- -version
显示版本并退出

示例:
通过脚本获取文件内容:
Percona Toolkit使用测试(5)PT-FIFO-SPLIT
#!/bin/bash
#file_name="/percona/fifo" #可以用来生成批量文件,保存结果
#file_num=1
while [ -e /tmp/pt-fifo-split ]; do
cat /tmp/pt-fifo-split
#cat /tmp/pt-fifo-split>/percona/fifo_$file_num.txt #将保存为多个文件
echo “----------------------------------”
sleep 1
let file_num++
done

先运行pt工具,再运行脚本:
工具输出:
Percona Toolkit使用测试(5)PT-FIFO-SPLIT
脚本输出:
Percona Toolkit使用测试(5)PT-FIFO-SPLIT