PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पिछले 24 घंटों में डेटा परिवर्तन वाली सभी तालिकाओं को कैसे सूचीबद्ध करें?

पहले मेरी टिप्पणी पर विचार करें।

9.4 तक पोस्टग्रेज और इसमें शामिल होने पर पंक्तियों को सम्मिलित या अपडेट किए जाने पर टाइमस्टैम्प अपने आप रिकॉर्ड नहीं होते हैं।

कुछ पंक्ति शीर्षलेखों में सिस्टम स्तंभ . हैं जो फॉरेंसिक काम में मदद कर सकता है। पंक्तियों का भौतिक क्रम (ctid ) कर सकते हैं एक संकेतक बनें यदि तब से तालिका में और कुछ नहीं हुआ है। साधारण मामलों में नई पंक्तियों को सम्मिलित करते समय तालिका के भौतिक अंत में जोड़ दिया जाता है, इसलिए ctid इंगित करता है कि आखिरी बार क्या डाला गया था - जब तक तालिका में कुछ भी नहीं बदलता। उदाहरण के लिए VACUUM के साथ, Postgres अपनी इच्छानुसार पंक्तियों के भौतिक क्रम को पुनर्व्यवस्थित करने के लिए स्वतंत्र है . कोई भी UPDATE एक नया पंक्ति संस्करण भी लिखता है, जो भौतिक स्थिति को बदल सकता है। नया संस्करण तालिका के अंत में होना आवश्यक नहीं है। यदि संभव हो तो पोस्टग्रेज़ नए पंक्ति संस्करण को उसी डेटा पृष्ठ पर रखने का प्रयास करता है (हॉट अपडेट ) ...

उस ने कहा, शारीरिक रूप से . प्राप्त करने के लिए यहां एक सरल प्रश्न है किसी तालिका के लिए अंतिम पंक्तियाँ:

SELECT ctid, *
FROM   big
ORDER  BY ctid DESC
LIMIT  10;

विस्तृत जानकारी के साथ dba.SE पर संबंधित उत्तर:

सम्मिलित लेनदेन आईडी xmin उपयोगी हो सकता है:

यदि आपके पास बैकअप . है घटना के ठीक पहले से परीक्षण डीबी के लिए, कि होगा मददगार रहें। पुरानी स्थिति को परीक्षण डीबी की एक अलग स्कीमा में पुनर्स्थापित करें और तालिकाओं की तुलना करें ...

आमतौर पर, मैं एक या दो timestamptz जोड़ता हूं महत्वपूर्ण तालिकाओं के लिए कॉलम जब पंक्ति डाली गई थी, और / या जब इसे पिछली बार अपडेट किया गया था। वह होगा अभी आपके लिए अत्यधिक उपयोगी हो...

क्या होगा आपके लिए भी अच्छा होगा:"temporal" सुविधाएँ SQL के साथ SQL मानक में पेश की गई हैं:2011 . लेकिन इसे अभी तक पोस्टग्रेज़ में लागू नहीं किया गया है।> .
एक अनौपचारिक PGXN पर एक्सटेंशन भी है। . मैंने इसका परीक्षण नहीं किया है और यह नहीं कह सकता कि यह कितनी दूर है।

पोस्टग्रेज 9.5 रिकॉर्ड करने के लिए एक विशेषता पेश करता है टाइमस्टैम्प प्रतिबद्ध करें (जैसे @क्रेग ने टिप्पणी की ) रिकॉर्डिंग शुरू करने से पहले इसे मैन्युअल रूप से सक्षम करने की आवश्यकता है।मैनुअल:

और इसके साथ काम करने के लिए कुछ फ़ंक्शन।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgreSQL:एक पंक्ति की नकल कैसे करें

  2. मैं PostgreSQL तालिका में पंक्तियों की गिनती कैसे तेज करूं?

  3. वर्तमान स्थिति को छोड़कर, सभी पिछली स्थितियों के योग के साथ क्वेरी तालिका

  4. OS X (Yosemite या El Capitan) के नवीनतम संस्करण की स्थापना के बाद `pg_tblspc` गायब है

  5. postgresql - मैक पर शुरू करें - `pg_ctl` काम नहीं कर रहा है