PHP实战中知识总结 / PgSQL - pg_test_fsync(bin目录文件)
一、pg_test_fsync
pg_test_fsync用于判断最快的wal_sync_method,还可以在发生认定的 I/O 问题时提供诊断信息。pg_test_fsync显示的区别可能不会在真实的数据库吞吐量上产生显著的区别,特别是由于 很多数据库服务器被它们的预写日志限制了速度。pg_test_fsync为wal_sync_method报告以微秒计的平均文件同步操作时间, 也能被用来提示用于优化commit_delay值的方法。
二、命令格式
pg_test_fsync [-f FILENAME] [-s SECS-PER-TEST]
1、option
参数 | 说明 |
---|---|
-f filename | 指定要写入测试数据到其中的文件名。这个文件必须位于和pg_wal目录所在或者将被放置的同一个文件系统中(pg_wal包含WAL文件)。默认是当前 目录中的pg_test_fsync.out |
-s --secs-per-test | 指定每次测试的秒数。每个测试的时间越长,测试的精度就越高,但是 它需要更多时间来运行。默认是 5 秒,这允许程序在 2 分钟以内完成 |
-v --version | 打印pg_test_fsync版本并且退出 |
-? --help | 显示有关pg_test_fsync命令行参数的帮助并且退出 |
// 命令实例
// ops/sec:每秒操作数
[postgres@izwz91quxhnlkan8kjak5hz ~]$ pg_test_fsync -s 10
10 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.
Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 869.351 ops/sec 1150 usecs/op
fdatasync 868.032 ops/sec 1152 usecs/op
fsync 315.819 ops/sec 3166 usecs/op
fsync_writethrough n/a
open_sync 318.236 ops/sec 3142 usecs/op
Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 422.282 ops/sec 2368 usecs/op
fdatasync 708.952 ops/sec 1411 usecs/op
fsync 309.492 ops/sec 3231 usecs/op
fsync_writethrough n/a
open_sync 169.229 ops/sec 5909 usecs/op
Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
1 * 16kB open_sync write 307.012 ops/sec 3257 usecs/op
2 * 8kB open_sync writes 160.402 ops/sec 6234 usecs/op
4 * 4kB open_sync writes 87.594 ops/sec 11416 usecs/op
8 * 2kB open_sync writes 42.867 ops/sec 23328 usecs/op
16 * 1kB open_sync writes 21.538 ops/sec 46430 usecs/op
Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written on a different
descriptor.)
write, fsync, close 331.295 ops/sec 3018 usecs/op
write, close, fsync 322.619 ops/sec 3100 usecs/op
Non-sync'ed 8kB writes:
write 86980.000 ops/sec 11 usecs/op