Postgresql ID объекта и кортежи - PullRequest
15 голосов
/ 26 августа 2010

Я иногда вижу сообщения типа

Процесс 12990 ожидает ExclusiveLock для кортежа (889,66) отношения 17720 базы данных 17607;заблокирован процессом 12992.

Так что, конечно, часть «процесс» вполне понятна, но я не знаю, как соотнести идентификатор отношения с понятным человеку именем.Я также не знаю, что делать с битом кортежа.

Кто-нибудь знает, как читать эти сообщения и как извлечь из них полезные данные?

Спасибо!

Ответы [ 2 ]

28 голосов
/ 20 августа 2014

«Отношение» - это таблица, а «кортеж» - это строка.

Вот хороший ярлык для получения имени таблицы из идентификатора таблицы (вы также можетезапросить таблицу pg_class):

=> select 17720::regclass;
┌──────────┐
│ regclass │
├──────────┤
│ my_table │
└──────────┘
(1 row)

А как насчет строки?«Бит кортежа» - это идентификатор кортежа , и каждая таблица в вашей базе данных имеет специальный системный столбец , называемый ctid, где хранятся эти идентификаторы.Теперь, когда мы знаем таблицу, о которой идет речь, мы можем сделать:

=> select * from my_table where ctid='(889,66)';

Однако!Из документации по системному столбцу (выделение добавлено): "[A], хотя ctid может быть использован для очень быстрого поиска версии строки, ctid строки изменится , если он обновляется или перемещается с помощью VACUUM FULL. Поэтомуctid бесполезен как долгосрочный идентификатор строки. "Другими словами, если вы достаточно быстры, вы, вероятно, можете поверить, что возвращенная строка является той, которая вовлечена в тупик, но эта информация не будет доступна вечно.

19 голосов
/ 26 августа 2010

Вы можете посмотреть это в системных таблицах: здесь интересует pg_class.

Выполнение запроса типа

SELECT OID, relname FROM pg_class
 oid  |              relname               
-------+------------------------------------
  1247 | pg_type
 11550 | user_mapping_options
 11554 | user_mappings
 11494 | triggered_update_columns
 11497 | triggers

а точнее

SELECT relname FROM pg_class WHERE OID=17720

может пролить свет на замки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...