एक "संबंध" एक तालिका है और एक "टुपल" एक पंक्ति है।
यहाँ (आप भी pg_class
तालिका क्वेरी कर सकते हैं) तालिका आईडी से तालिका के नाम प्राप्त करने के लिए a nice shortcut है:
=> select 17720::regclass;
┌──────────┐
│ regclass │
├──────────┤
│ my_table │
└──────────┘
(1 row)
अब कैसे पंक्ति के बारे में? "टुपल बिट" tuple identifier है, और आपके डेटाबेस में प्रत्येक तालिका में system column है जिसे ctid
कहा जाता है जहां उन पहचानकर्ता संग्रहीत किए जाते हैं। अब जब हम प्रश्न में तालिका जानते हैं, तो हम कर सकते हैं:
=> select * from my_table where ctid='(889,66)';
हालांकि! सिस्टम कॉलम डॉक्स से (जोर जोड़ा गया): "[ए] हालांकि सीटीआईडी का उपयोग पंक्ति संस्करण को बहुत तेज़ी से ढूंढने के लिए किया जा सकता है, एक पंक्ति का सीटीआईडी बदल देगा यदि इसे वैक्यूम पूर्ण द्वारा अपडेट या स्थानांतरित किया गया है। इसलिए सीटीआईडी बेकार है एक दीर्घकालिक पंक्ति पहचानकर्ता। " दूसरे शब्दों में, यदि आप पर्याप्त तेज़ी से हैं तो आप शायद भरोसा कर सकते हैं कि लौटाई गई पंक्ति डेडलॉक में शामिल है, लेकिन वह जानकारी हमेशा के लिए उपलब्ध नहीं होगी।
धन्यवाद! मैंने मैपिंग के संबंध में आईडी को समझ लिया, लेकिन अभी भी यह सुनिश्चित नहीं है कि tuples का क्या करना है ... – user431221
असल में, मुझे स्पष्टीकरण देना चाहिए - यह सुनिश्चित नहीं करना चाहिए कि ट्यूपल नोटेशन (x, y) कैसे पढ़ा जाए और मैं इसका उपयोग कैसे कर सकता हूं डेडलॉक – user431221
ठीक क्या हुआ, डेटा का एक और बिट मिला - संख्या लेनदेन आईडी हैं जो टुपल/पंक्ति डाली या हटा दी गई हैं। क्या कोई तरीका है कि मुझे यह पता चल सकता है कि कौन से एसक्यूएल लेनदेन चल रहे थे? – user431221