|
8 | 8 | <body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF">
|
9 | 9 | <h1><a name="section_1">PostgreSQL TODO List</a></h1>
|
10 | 10 | <p>Current maintainer: Bruce Momjian (<a href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
|
11 |
| -Last updated: Thu Sep 1 20:49:44 EDT 2005 |
| 11 | +Last updated: Fri Sep 2 11:22:36 EDT 2005 |
12 | 12 | </p>
|
13 | 13 | <p>The most recent version of this document can be viewed at<br/>
|
14 | 14 | <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>.
|
@@ -867,6 +867,25 @@ <h1><a name="section_21">Miscellaneous Performance</a></h1>
|
867 | 867 | could hit disk before WAL is written.
|
868 | 868 | </p>
|
869 | 869 | </li><li>Add a script to ask system configuration questions and tune postgresql.conf
|
| 870 | + </li><li>Merge xmin/xmax/cmin/cmax back into three header fields |
| 871 | +<p> Before subtransactions, there used to be only three fields needed to |
| 872 | + store these four values. This was possible because only the current |
| 873 | + transaction looks at the cmin/cmax values. If the current transaction |
| 874 | + created and expired the row the fields stored where xmin (same as |
| 875 | + xmax), cmin, cmax, and if the transaction was expiring a row from a |
| 876 | + another transaction, the fields stored were xmin (cmin was not |
| 877 | + needed), xmax, and cmax. Such a system worked because a transaction |
| 878 | + could only see committed rows from another transaction. However, |
| 879 | + subtransactions can see rows from outer transactions, and once the |
| 880 | + subtransaction completes, the outer transaction continues, requiring |
| 881 | + the storage of all four fields. With subtransactions, an outer |
| 882 | + transaction can create a row, a subtransaction expire it, and when the |
| 883 | + subtransaction completes, the outer transaction still has to have |
| 884 | + proper visibility of the row, for example, for cursors. |
| 885 | +</p> |
| 886 | +<p> One possible solution is to create a phantom cid which represents a |
| 887 | + cmin/cmax pair and is stored in local memory. |
| 888 | +</p> |
870 | 889 | </li><li>Use a phantom command counter for nested subtransactions to reduce
|
871 | 890 | per-tuple overhead
|
872 | 891 | </li><li>Research storing disk pages with no alignment/padding
|
|
0 commit comments