2016-12-23 45 views
4

はログイン:tuple (0,79)デッドロックが発生したときのpostgresログファイルの "tuple(0,79)"は何を意味しますか? postgresので

2016-12-23 15:28:14 +07 [17281-351 trns: 4280939, vtrns: 3/20] [email protected] HINT: See server log for query details. 
2016-12-23 15:28:14 +07 [17281-352 trns: 4280939, vtrns: 3/20] [email protected] CONTEXT: while locking tuple (0,79) in relation "account" 
2016-12-23 15:28:14 +07 [17281-353 trns: 4280939, vtrns: 3/20] [email protected] STATEMENT: SELECT id FROM account where id=$1 for update; 

私はデッドロックを引き起こすときに私は、テキストを見ることができます。

私が知っているように、タプルはテーブルのいくつかの行です。しかし、私は(0,79)の意味を理解していません。私はテーブルのアカウントに2行しか持っていない、それはちょうど再生と自己学習のアプリケーションです。

したがって、(0,79)は何を意味しますか?

+1

...チェックアウトする権利$1SELECT id,ctid FROM account where id=$1を実行http://rachbelaid.com/introduction-to-postgres-physical-storage/

を読み取る手段**いくつかの列からなる単一の**行。 2行のテーブルには2つのタプルがあります。 –

答えて

4

これは、システム列ctidのデータ型です。タプルIDはテーブル内の行の物理的な位置を示す (ブロック番号、ブロック内のタプルインデックス)のペアです。

https://www.postgresql.org/docs/current/static/datatype-oid.html

を読み取るこれはブロック番号0、行インデックス79

もまたタプルである

+0

うん、これはpostgresのソースで見つかりました:https://github.com/postgres/postgres/blob/55c3391d1e6a201b5b891781d21fe682a8c64fe6/src/backend/storage/lmgr/lmgr.c#L725 – Hayate

関連する問題