Prev: pgadmin debug on windows
Next: Possible PostgreSQL 8.3beta4 bug with MD5authentication in psql?
From: Gregory Stark on 2 Nov 2007 06:54 There's an xlogdump project on pgfoundry. However it suffers from perennial bitrot as it has to maintain its own table of xlog record types and code to decode each xlog record type. Earlier I modified xlogdump to generate a CSV loadable data set so I could do some basic analysis and see what types of operations are generating the most wal traffic. But I found it had bitrotted and needed some attention to bring it up to date. Again now I wanted to repeat that analysis to measure the effect HOT has had on WAL traffic. And again now I find it has bitrotted, not least because of HOT of course... I think this module should be rewritten to depend more closely on the Postgres source files. What I'm doing now is making an SRF in the style of the pageinspect module which will read an arbitrary wal file and generate records directly. This has a big disadvantage compared to the original approach, namely that you need a functioning Postgres instance of the same version to dissect wal records. But it also has a big advantage, namely that it will always be in sync. It will just use the same RmgrTable to find the rm_name and call the rm_desc method to decode the record. The result might not be quite as or dense as the rm_desc function is meant for debugging messages. We could address that sometime with a new method if we wanted to. I'm thinking of actually dropping it directly into the pageinspect contrib module. It's not quite an exact fit but it doesn't seem to deserve it's own contrib module and it's likely to suffer the same bitrot problem if it lives in pgfoundry. Incidentally I would like to call xlog.c:RecordIsValid() which is currently a static function. Any objection to exporting it? It doesn't depend on any external xlog.c state. -- Gregory Stark EnterpriseDB http://www.enterprisedb.com Ask me about EnterpriseDB's On-Demand Production Tuning ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo(a)postgresql.org so that your message can get through to the mailing list cleanly
From: Heikki Linnakangas on 2 Nov 2007 07:09 Gregory Stark wrote: > There's an xlogdump project on pgfoundry. However it suffers from perennial > bitrot as it has to maintain its own table of xlog record types and code to > decode each xlog record type. > > ... > > I think this module should be rewritten to depend more closely on the Postgres > source files. What I'm doing now is making an SRF in the style of the > pageinspect module which will read an arbitrary wal file and generate records > directly. > > This has a big disadvantage compared to the original approach, namely that you > need a functioning Postgres instance of the same version to dissect wal > records. > > But it also has a big advantage, namely that it will always be in sync. It > will just use the same RmgrTable to find the rm_name and call the rm_desc > method to decode the record. The result might not be quite as or dense as the > rm_desc function is meant for debugging messages. We could address that > sometime with a new method if we wanted to. Would it still be possible to compile it as a stand-alone program, using the backend source files? It would be a hack, we just went through some effort to clean up references to server private header files from ecpg and initdb, but it feels a lot nicer to use as a standalone program than requiring a running postgres instance. How much infrastructure would you need to call rm_name and rm_desc from a standalone program? palloc and friends, I presume, What else? > I'm thinking of actually dropping it directly into the pageinspect contrib > module. It's not quite an exact fit but it doesn't seem to deserve it's own > contrib module and it's likely to suffer the same bitrot problem if it lives > in pgfoundry. I'd vote for pgfoundry or a new contrib module. It shouldn't suffer from bitrot as easily as what's there now. That was the whole point of switching over to the new approach, right? -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster
From: Magnus Hagander on 2 Nov 2007 07:17 Heikki Linnakangas wrote: > Gregory Stark wrote: >> There's an xlogdump project on pgfoundry. However it suffers from >> perennial >> bitrot as it has to maintain its own table of xlog record types and >> code to >> decode each xlog record type. >> >> ... >> >> I think this module should be rewritten to depend more closely on the >> Postgres >> source files. What I'm doing now is making an SRF in the style of the >> pageinspect module which will read an arbitrary wal file and generate >> records >> directly. >> >> This has a big disadvantage compared to the original approach, namely >> that you >> need a functioning Postgres instance of the same version to dissect wal >> records. >> >> But it also has a big advantage, namely that it will always be in >> sync. It >> will just use the same RmgrTable to find the rm_name and call the rm_desc >> method to decode the record. The result might not be quite as or dense >> as the >> rm_desc function is meant for debugging messages. We could address that >> sometime with a new method if we wanted to. > > Would it still be possible to compile it as a stand-alone program, using > the backend source files? It would be a hack, we just went through some > effort to clean up references to server private header files from ecpg > and initdb, but it feels a lot nicer to use as a standalone program than > requiring a running postgres instance. > > How much infrastructure would you need to call rm_name and rm_desc from > a standalone program? palloc and friends, I presume, What else? Do you actually need palloc and friends, or just "something named palloc"? We already have some stuff in src/port that deals with using palloc calls in routines used in frontend programs... //Magnus ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster
From: Bernd Helmle on 2 Nov 2007 08:10 --On Freitag, November 02, 2007 10:54:45 +0000 Gregory Stark <stark(a)enterprisedb.com> wrote: > I think this module should be rewritten to depend more closely on the > Postgres source files. What I'm doing now is making an SRF in the style > of the pageinspect module which will read an arbitrary wal file and > generate records directly. Isn't that already partially implemented in xlogviewer, hosted on the same project: <http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/xlogviewer/xlogviewer/ The last time i've used it it had some problems with exhausted memory, but it implements a SRF returning WAL records from a given log segment file. -- Thanks Bernd ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org
From: Simon Riggs on 4 Nov 2007 04:13 On Fri, 2007-11-02 at 10:54 +0000, Gregory Stark wrote: > Incidentally I would like to call xlog.c:RecordIsValid() which is currently a > static function. Any objection to exporting it? It doesn't depend on any > external xlog.c state. You'll have some fun with that because most of the stuff in xlog.c depends upon module-level state. We should change that, but I'd like to see Florian's code go in first then refactor things. If you change those programs too much we'll need completely separate programs for each release, which might be a bad thing. -- Simon Riggs 2ndQuadrant http://www.2ndQuadrant.com ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings
|
Pages: 1 Prev: pgadmin debug on windows Next: Possible PostgreSQL 8.3beta4 bug with MD5authentication in psql? |