Rome university

Поиск
Список
Период
Сортировка
От letizia leo
Тема Rome university
Дата
Msg-id 20060502143114.4691.qmail@web86903.mail.ukl.yahoo.com
обсуждение исходный текст
Ответы Re: Rome university  (Alvaro Herrera <alvherre@commandprompt.com>)
Re: Rome university  (Martijn van Oosterhout <kleptog@svana.org>)
Список pgsql-hackers
<table border="0" cellpadding="0" cellspacing="0" style="MARGIN-LEFT: -5.25pt; WIDTH: 101.16%; mso-cellspacing: 0cm;
mso-padding-alt:0cm 0cm 0cm 0cm" width="101%"><tbody><tr><td style="BORDER-RIGHT: #ece9d8; PADDING-RIGHT: 0cm;
BORDER-TOP:#ece9d8; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 100%; PADDING-TOP: 0cm;
BORDER-BOTTOM:#ece9d8; BACKGROUND-COLOR: transparent" valign="top" width="100%"><pre><tt><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">Hi,</span></tt></pre><pre><tt><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB"> </span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">We're a team from Rome University (Italy) and we are working on an</span></tt><tt><span
lang="EN-GB"style="mso-ansi-language: EN-GB"><font size="2"> </font></span></tt></pre><pre><tt><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">hacking of PostgreSQL MVCC. The basic idea
isto have multiple </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">instances </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">of a same user transaction concurrently executing against the DB
in</span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB">orderto achieve fault tolerance. We do not want to bother you with the </span></tt></pre><pre><tt><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">details of our idea, but of
coursewe'd be delighted toprovide you </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">additional information wheter you were interested or even just
curious!</span></tt></pre><pre><tt><spanlang="EN-GB" style="mso-ansi-language: EN-GB"><font
size="2"> </font></span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">We're writing to you since we're studying the current MVCC </span></tt></pre><pre><tt><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">implementation and we're
stuckwith a doubt that's driving us crazy </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">since a couple of weeks so we'd be extremely grateful to anybody
who</span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB">couldenlighten us.</span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size:
10.0pt;mso-ansi-language: EN-GB"> </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">Our amlethic question is:</span></tt></pre><pre><tt><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB"> </span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">tqual.c, HeapTupleSatisfies* (Self,Now etc). Let's focus on </span></tt></pre><pre><tt><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">HeapTupleSatisfiesItself for
simplicity.The piece of code that's </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">unclear is the following:</span></tt></pre><pre><tt><span
lang="EN-GB"style="mso-ansi-language: EN-GB"><font size="2"> </font></span></tt></pre><pre><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">144:       
elseif (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(tuple)))</font></span></pre><pre><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">145:       
{</font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB"><fontface="Arial Unicode MS">146:            if (tuple->t_infomask & HEAP_XMAX_INVALID)  /* xid
invalid*/</font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">147:                return true;</font></span></pre><pre><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode
MS">148: </font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">149:            if (tuple->t_infomask & HEAP_IS_LOCKED)  
 /* not deleter */</font></span></pre><pre><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">150:                return true;</font></span></pre><pre><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode
MS">151: </font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">152:            Assert(!(tuple->t_infomask &
HEAP_XMAX_IS_MULTI));</font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">153: </font></span></pre><pre><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">154:       
   /* deleting subtransaction aborted? */</font></span></pre><pre><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">155:           if
(TransactionIdDidAbort(HeapTupleHeaderGetXmax(tuple)))</font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE:
12pt;mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">156:           
{</font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB"><fontface="Arial Unicode MS">157:                tuple->t_infomask |=
HEAP_XMAX_INVALID;</font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">158:               
SetBufferCommitInfoNeedsSave(buffer);</font></span></pre><pre><fontface="Arial Unicode MS"><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">159:               return
true;</span><spanlang="EN-GB" style="mso-ansi-language: EN-GB"></span></font></pre><pre><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">160:       
   }</font></span></pre><pre><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB"><fontface="Arial Unicode MS">161: </font></span></pre><pre><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode MS">162:           
Assert(TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmax(tuple)));</font></span></pre><pre><spanlang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB"><font face="Arial Unicode
MS">163: </font></span></pre><pre><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB"><font face="Arial Unicode MS">164:            return false;</font></span></pre><pre><font
face="ArialUnicode MS"><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB">165:       }</span><span lang="EN-GB" style="mso-ansi-language: EN-GB"></span></font></pre><pre><span
lang="EN-GB"style="mso-ansi-language: EN-GB"><font face="Arial Unicode MS"><font
size="2"> </font></font></span></pre><pre><tt><spanlang="EN-GB" style="mso-ansi-language: EN-GB"><font
size="2"> </font></span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">and the doubt is the following: how is it possible that -line 144- Xmin
</span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt;mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB">isthe current transaction ( i.e. it has created this tuple, it is </span></tt></pre><pre><tt><span lang="EN-GB"
style="FONT-SIZE:12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">holding an exclusive lock on it since it
hasnot committed yet) and </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size:
10.0pt;mso-ansi-language: EN-GB">that </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">-line 149- there is a different (?) transaction that is also
locking</span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">the </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size:
10.0pt;mso-ansi-language: EN-GB">tuple(HEAP_IS_LOCKED=(HEAP_XMAX_EXCL_LOCK||HEAP_XMAX_SHARED_LOCK) )?
</span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language:
EN-GB">Unlesswe are missing something, this situation is possible exclusively </span></tt></pre><pre><tt><span
lang="EN-GB"style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-GB">in case the XMAX transaction
isa subtransaction of XMIN, which can </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">access the tuple despite the exclusive lock held by XMIN. This
seems</span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">correct according to the comment in line 154, which refers to a
</span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;mso-ansi-language:
EN-GB">"subtransaction".</span></tt></pre><pre><tt><spanlang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size:
10.0pt;mso-ansi-language: EN-GB"> </span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt;
mso-bidi-font-size:10.0pt; mso-ansi-language: EN-GB">Are we understanding correctly what this code is doing and the
related</span></tt></pre><pre><tt><span lang="EN-GB" style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt;
mso-ansi-language:EN-GB">underlying MVCC mechanisms?</span></tt><tt><span lang="EN-GB" style="mso-ansi-language:
EN-GB"></span></tt></pre><pre><tt><spanlang="EN-GB" style="mso-ansi-language: EN-GB"> </span></tt></pre><pre><tt><span
lang="EN-GB"style="mso-ansi-language: EN-GB"> </span></tt></pre><pre><tt><span lang="EN-GB" style="mso-ansi-language:
EN-GB"> </span></tt></pre><pre><tt><spanlang="EN-GB" style="mso-ansi-language:EN-GB"> </span></tt></pre><pre><tt><span
lang="EN-GB"style="mso-ansi-language: EN-GB"> </span></tt></pre><div class="MsoNormal" style="MARGIN: 0cm 0cm
0pt"><fontsize="5"><font face="Times New Roman"> <span style="FONT-SIZE: 12pt; FONT-FAMILY:'Arial Unicode
MS'"></span></font></font></div></td></tr></tbody></table><p>Chiacchieracon i tuoi amici in tempo reale! <br />
http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: patch review, please: Autovacuum/Vacuum times via stats.
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: Rome university