[BUGS] BUG #14687: pg_xlogdump does only count "main data" for record lengthand leading to incorrect statistics - Mailing list pgsql-bugs
| From | chjischj@163.com |
|---|---|
| Subject | [BUGS] BUG #14687: pg_xlogdump does only count "main data" for record lengthand leading to incorrect statistics |
| Date | |
| Msg-id | 20170603165939.1436.58887@wrigleys.postgresql.org Whole thread Raw |
| Responses |
Re: [BUGS] BUG #14687: pg_xlogdump does only count "main data" forrecord length and leading to incorrect statistics
Re: [BUGS] BUG #14687: pg_xlogdump does only count "main data" forrecord length and leading to incorrect statistics |
| List | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 14687
Logged by: Chen huajun
Email address: chjischj@163.com
PostgreSQL version: 9.5.0
Operating system: ALL
Description:
Currently, record length in pg_xlogdump/pg_waldump's output only count
length of "main data",
This results in pg_xlogdump/pg_waldump can not accurately count the size of
the various types of WAL records.
for example
[postgres@node1 ~]$ pg_waldump --stats=record
pg10data/pg_wal/00000001000000000000001F Type N (%)
Record size (%) FPI size (%) Combined size
(%) ---- - ---
----------- --- -------- --- -------------
--- XLOG/FPI 939 ( 34.68)
22536 ( 27.15) 6897764 ( 99.75) 6920300 ( 98.89) Transaction/COMMIT
6 ( 0.22) 976 ( 1.18) 0 ( 0.00) 976 ( 0.01) Storage/CREATE
3 ( 0.11) 120 ( 0.14) 0 ( 0.00) 120
( 0.00) Standby/LOCK 6 ( 0.22) 240 ( 0.29) 0 (
0.00) 240 ( 0.00) Standby/INVALIDATIONS 3 ( 0.11) 264 (
0.32) 0 ( 0.00) 264 ( 0.00) Heap2/VISIBLE 1 (
0.04) 29 ( 0.03) 8192 ( 0.12) 8221 ( 0.12) Heap2/MULTI_INSERT
165 ( 6.09)
14606 ( 17.60) 0 ( 0.00) 14606 ( 0.21) Heap2/MULTI_INSERT+INIT
1493 ( 55.13)
41804 ( 50.37) 0 ( 0.00) 41804 ( 0.60) Heap/INSERT
29 ( 1.07) 783 ( 0.94) 0 ( 0.00) 783 ( 0.01) Heap/INPLACE
7 ( 0.26) 182 ( 0.22) 0 ( 0.00) 182
( 0.00) Btree/INSERT_LEAF 56 ( 2.07) 1456 ( 1.75) 8888 (
0.13) 10344 ( 0.15) --------
-------- -------- -------- Total 2708
82996 [1.19%] 6914844 [98.81%] 6997840 [100%]
Total Combined size above is only 6997840 byte,but should be 16MB.
So, I modified one line of code in pg_waldump.c
src/bin/pg_waldump/pg_waldump.c:390
rec_len = XLogRecGetDataLen(record) + SizeOfXLogRecord;
/* * Calculate the amount of FPI data in the record. * * XXX: We peek into xlogreader's
privatedecoded backup blocks for
the * bimg_len indicating the length of FPI data. It doesn't seem worth
it to * add an accessor macro for this. */ fpi_len = 0; for (block_id = 0; block_id <=
record->max_block_id;block_id++) { if (XLogRecHasBlockImage(record, block_id))
fpi_len += record->blocks[block_id].bimg_len; }
==> /* * Calculate the amount of FPI data in the record. * * XXX: We peek into
xlogreader'sprivate decoded backup blocks for
the * bimg_len indicating the length of FPI data. It doesn't seem worth
it to * add an accessor macro for this. */ fpi_len = 0; for (block_id = 0; block_id <=
record->max_block_id;block_id++) { if (XLogRecHasBlockImage(record, block_id))
fpi_len += record->blocks[block_id].bimg_len; } rec_len = XLogRecGetTotalLen(record) - fpi_len;
and got more precise output(correct FPI ratio is 41.37% instead of 98.81%)
[postgres@node1 ~]$ pg_waldump --stats=record
pg10data/pg_wal/00000001000000000000001F Type N (%)
Record size (%) FPI size (%) Combined size
(%) ---- - ---
----------- --- -------- --- -------------
--- XLOG/FPI 939 ( 34.68)
46011 ( 0.47) 6897764 ( 99.75) 6943775 ( 41.54) Transaction/COMMIT
6 ( 0.22) 988 ( 0.01) 0 ( 0.00) 988 ( 0.01) Storage/CREATE
3 ( 0.11) 126 ( 0.00) 0 ( 0.00) 126
( 0.00) Standby/LOCK 6 ( 0.22) 252 ( 0.00) 0 (
0.00) 252 ( 0.00) Standby/INVALIDATIONS 3 ( 0.11) 270 (
0.00) 0 ( 0.00) 270 ( 0.00) Heap2/VISIBLE 1 (
0.04) 64 ( 0.00) 8192 ( 0.12) 8256 ( 0.05) Heap2/MULTI_INSERT
165 ( 6.09)
547329 ( 5.59) 0 ( 0.00) 547329 (
3.27) Heap2/MULTI_INSERT+INIT 1493 ( 55.13)
9194033 ( 93.82) 0 ( 0.00) 9194033 (
55.01) Heap/INSERT 29 ( 1.07) 5655 ( 0.06) 0 (
0.00) 5655 ( 0.03) Heap/INPLACE 7 ( 0.26) 1493 (
0.02) 0 ( 0.00) 1493 ( 0.01) Btree/INSERT_LEAF 56 (
2.07) 3723 ( 0.04) 8888 ( 0.13) 12611 ( 0.08)
--------
-------- -------- -------- Total 2708
9799944 [58.63%] 6914844 [41.37%] 16714788 [100%]
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
pgsql-bugs by date: