5.4. СиÑÑемнÑе ÑÑолбÑÑ
Ркаждой ÑаблиÑе еÑÑÑ Ð½ÐµÑколÑко ÑиÑÑемнÑÑ ÑÑолбÑов, неÑвно опÑеделÑннÑÑ ÑиÑÑемой. Ðак ÑледÑÑвие, Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð² каÑеÑÑве имÑн полÑзоваÑелÑÑÐºÐ¸Ñ ÑÑолбÑов. (ÐамеÑÑÑе, ÑÑо ÑÑо не завиÑÐ¸Ñ Ð¾Ñ Ñого, ÑвлÑеÑÑÑ Ð»Ð¸ Ð¸Ð¼Ñ ÐºÐ»ÑÑевÑм Ñловом или неÑ; заклÑÑение имени в кавÑÑки не Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ ÑÑого огÑаниÑениÑ.) ÐÑи ÑÑолбÑÑ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ð°Ñ Ð±ÐµÑпокоиÑÑ, вам лиÑÑ Ð´Ð¾ÑÑаÑоÑно знаÑÑ Ð¾Ð± Ð¸Ñ ÑÑÑеÑÑвовании.
oidÐденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа (object ID) Ð´Ð»Ñ ÑÑÑоки. ÐÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿ÑиÑÑÑÑÑвÑеÑ, ÑолÑко еÑли ÑаблиÑа бÑла Ñоздана Ñ Ñказанием
WITH OIDS, или еÑли в Ð¼Ð¾Ð¼ÐµÐ½Ñ ÐµÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ñла ÑÑÑановлена пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð½ÑигÑÑаÑии default_with_oids. ÐÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð¼ÐµÐµÑ Ñипoid(Ñ Ñем же именем, ÑÑо и Ñам ÑÑолбеÑ); подÑобнее об ÑÑом Ñипе Ñм. Раздел 8.19.tableoidÐденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа Ð´Ð»Ñ ÑаблиÑÑ, ÑодеÑжаÑей ÑÑÑокÑ. ÐÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¾Ñобенно полезен Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов, имеÑÑÐ¸Ñ Ð´ÐµÐ»Ð¾ Ñ Ð¸ÐµÑаÑÑ Ð¸ÐµÐ¹ наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ (Ñм. Раздел 5.9), Ñак как без него Ñложно опÑеделиÑÑ, из какой ÑаблиÑÑ Ð²ÑбÑана ÑÑÑока. СвÑзав
tableoidÑо ÑÑолбÑомoidв ÑаблиÑеpg_class, можно бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ.xminÐденÑиÑикаÑÐ¾Ñ (код) ÑÑанзакÑии, добавивÑей ÑÑÑÐ¾ÐºÑ ÑÑой веÑÑии. (ÐеÑÑÐ¸Ñ ÑÑÑоки â ÑÑо ÐµÑ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑалÑное ÑоÑÑоÑние; пÑи каждом изменении ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ и Ñой же логиÑеÑкой ÑÑÑоки.)
cminÐÐ¾Ð¼ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ (наÑÐ¸Ð½Ð°Ñ Ñ Ð½ÑлÑ) внÑÑÑи ÑÑанзакÑии, добавивÑей ÑÑÑокÑ.
xmaxÐденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии, ÑдаливÑей ÑÑÑокÑ, или 0 Ð´Ð»Ñ Ð½ÐµÑдалÑнной веÑÑии ÑÑÑоки. ÐнаÑение ÑÑого ÑÑолбÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ½ÑлевÑм и Ð´Ð»Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ веÑÑии ÑÑÑоки. ÐÑо обÑÑно ознаÑаеÑ, ÑÑо ÑдалÑÑÑÐ°Ñ ÑÑанзакÑÐ¸Ñ ÐµÑÑ Ð½Ðµ бÑла заÑикÑиÑована, или Ñдаление бÑло оÑменено.
cmaxÐÐ¾Ð¼ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² ÑдалÑÑÑей ÑÑанзакÑии или нолÑ.
ctidФизиÑеÑкое ÑаÑположение данной веÑÑии ÑÑÑоки в ÑаблиÑе. ÐамеÑÑÑе, ÑÑо Ñ Ð¾ÑÑ Ð¿Ð¾
ctidможно оÑÐµÐ½Ñ Ð±ÑÑÑÑо найÑи веÑÑÐ¸Ñ ÑÑÑоки, знаÑениеctidизмениÑÑÑ Ð¿Ñи вÑполненииVACUUM FULL. Таким обÑазом,ctidнелÑÐ·Ñ Ð¿ÑименÑÑÑ Ð² каÑеÑÑве долгоÑÑоÑного иденÑиÑикаÑоÑа ÑÑÑоки. ÐÐ»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии логиÑеÑÐºÐ¸Ñ ÑÑÑок лÑÑÑе иÑполÑзоваÑÑ OID или даже дополниÑелÑнÑй поÑледоваÑелÑнÑй номеÑ.
ÐÐ¾Ð´Ñ OID пÑедÑÑавлÑÑÑ Ñобой 32-биÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¸ вÑбиÑаÑÑÑÑ Ð¸Ð· единого Ð´Ð»Ñ Ð²Ñей СУÐÐ ÑÑÑÑÑика. РболÑÑÐ¸Ñ Ð¸Ð»Ð¸ долгоживÑÑÐ¸Ñ Ð±Ð°Ð·Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑÐ¾Ñ ÑÑÑÑÑик Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¹Ñи по кÑÑгÑ. Таким обÑазом, не ÑекомендÑеÑÑÑ ÑаÑÑÑиÑÑваÑÑ Ð½Ð° ÑникалÑноÑÑÑ OID, еÑли ÑолÑко Ð²Ñ Ð½Ðµ обеÑпеÑиÑе ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно. ÐÑли вам нÑжно иденÑиÑиÑиÑоваÑÑ ÑÑÑоки ÑаблиÑÑ, наÑÑоÑÑелÑно ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑи. Ðднако можно иÑполÑзоваÑÑ Ð¸ ÐºÐ¾Ð´Ñ OID, пÑи вÑполнении ÑледÑÑÑÐ¸Ñ ÑÑловий:
Ðогда Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии ÑÑÑок ÑÐ°Ð±Ð»Ð¸Ñ Ð¿ÑименÑеÑÑÑ OID, в каждой Ñакой ÑаблиÑе должно ÑоздаваÑÑÑÑ Ð¾Ð³ÑаниÑение ÑникалÑноÑÑи Ð´Ð»Ñ ÑÑолбÑа OID. Ðогда Ñакое огÑаниÑение ÑникалÑноÑÑи (или ÑникалÑнÑй индекÑ) ÑÑÑеÑÑвÑеÑ, ÑиÑÑема позабоÑиÑÑÑ Ð¾ Ñом, ÑÑÐ¾Ð±Ñ OID новой ÑÑÑоки не Ñовпал Ñ Ñже ÑÑÑеÑÑвÑÑÑими. (ÐонеÑно, ÑÑо возможно, ÑолÑко еÑли в ÑаблиÑе менÑÑе 232 (4 миллиаÑдов) ÑÑÑок, а на пÑакÑике ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð³Ð¾Ñаздо менÑÑе, инаÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑÑадаÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ ÑиÑÑемÑ.)
Ðикогда не ÑледÑÐµÑ ÑаÑÑÑиÑÑваÑÑ, ÑÑо OID бÑдÑÑ ÑникалÑÐ½Ñ ÑÑеди вÑÐµÑ ÑаблиÑ; в каÑеÑÑве глобалÑного иденÑиÑикаÑоÑа в ÑÐ°Ð¼ÐºÐ°Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ÑполÑзÑйÑе комбинаÑиÑ
tableoidи OID ÑÑÑоки.ÐонеÑно, вÑе ÑÑи ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ñ Ñказанием
WITH OIDS. Ð PostgreSQL 8.1 и новее по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑWITHOUT OIDS.
ÐденÑиÑикаÑоÑÑ ÑÑанзакÑий Ñакже ÑвлÑÑÑÑÑ 32-биÑнÑми. РдолгоживÑÑей базе даннÑÑ Ð¾Ð½Ð¸ могÑÑ Ð¿Ð¾Ð¹Ñи по кÑÑгÑ. ÐÑо не кÑиÑиÑно пÑи пÑавилÑном обÑлÑживании ÐÐ; подÑобнее об ÑÑом Ñм. ÐлавÑ 23. Ðднако полагаÑÑÑÑ Ð½Ð° ÑникалÑноÑÑÑ ÐºÐ¾Ð´Ð¾Ð² ÑÑанзакÑий в ÑеÑение длиÑелÑного вÑемени (пÑи более Ñем миллиаÑде ÑÑанзакÑий) не ÑледÑеÑ.
ÐденÑиÑикаÑоÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ñакже 32-биÑнÑе. ÐÑо ÑоздаÑÑ Ð¶ÑÑÑкий Ð»Ð¸Ð¼Ð¸Ñ Ð½Ð° 232 (4 миллиаÑда) команд SQL в одной ÑÑанзакÑии. Ðа пÑакÑике ÑÑо не пÑоблема â замеÑÑÑе, ÑÑо ÑÑо Ð»Ð¸Ð¼Ð¸Ñ ÑиÑла команд SQL, а не колиÑеÑÑва обÑабаÑÑваемÑÑ ÑÑÑок. ÐÑоме Ñого, иденÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð»ÑÑаÑÑ ÑолÑко Ñе командÑ, коÑоÑÑе ÑакÑиÑеÑки изменÑÑÑ ÑодеÑжимое Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .