unlogged tables v5
От | Robert Haas |
---|---|
Тема | unlogged tables v5 |
Дата | |
Msg-id | AANLkTikTTkOMqeax=3KvAR8mVBRAnwB6j-um9njChkjv@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: unlogged tables v5
|
Список | pgsql-hackers |
Here's an updated patch for unlogged tables, incorporating the following changes since v4: 1. pg_dump and pg_dumpall now take an argument --no-unlogged-table-data, which does just about what it sounds like. In a previous email, I suggested that what we wanted here was --no-unlogged-tables, but on further thought I don't think that's right. There's no reason to think that the schema of an unlogged table shouldn't be backed up, just the contents. 2. Documentation improvements, including changes to catalogs.sgml and storage.sgml, per observations from Tom Lane. 3. Unlogged buffers are no longer included in a non-shutdown checkpoint, which should improve performance for some workloads. This is implemented via a new flag BM_PERMANENT, which made the logic a bit simpler than BM_UNLOGGED with the opposite sense would have done. It could be argued that this flag out to be called BM_SKIP_CHECKPOINTS_EXCEPT_SHUTDOWN_CHECKPOINTS, or something like that, but I think that's gilding the lily. 4. Unlogged tables now survive a clean shutdown. (Note that this is not incompatible with #3: IF a buffer is written, the relation file will be fsync'd; #3 just affects how often they get written in the first place.) 5. Support unlogged GIN indexes. There are a couple of open issues which I'm thinking can be left for future work. A. Minimization of fsync traffic. fsyncs on unlogged relations can potentially be postponed until shutdown time. Right now, they'll happen as part of the next checkpoint. B. Unlogged GIST indexes aren't supported. Making this work appears to require (i) requiring every page in shared buffers to have not only an LSN but a full page header, (ii) allocating a flag bit in the page header to designate that the LSN isn't real and no XLogFlush should be done, (iii) creating a shared-memory counter that will generate fake LSNs for use by the GIST index code and adjusting the GIST code to use this (and set the bit described in (ii)) when an unlogged GIST is in memory, (iv) storing the counter described in (iii) somewhere (perhaps in the control file) on shutdown so that after a clean shutdown and restart the value continues to increase monotonically. I'm not entirely convinced that the penny is worth the candle here. I'm thinking this is about ready to commit. Further review and testing would be appreciated, especially of these latest changes. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Вложения
В списке pgsql-hackers по дате отправления: