पोस्टग्रेज 9.5 इस समस्या से संबंधित एक नई सुविधा पेश की:टाइमस्टैम्प प्रतिबद्ध करें ।
आपको बस सक्रिय करने की आवश्यकता है track_commit_timestamp
में postgresql.conf
(और पुनरारंभ करें!) प्रतिबद्ध टाइमस्टैम्प को ट्रैक करना शुरू करने के लिए। फिर आप क्वेरी कर सकते हैं:
SELECT * FROM tbl
WHERE pg_xact_commit_timestamp(xmin) >= '2015-11-26 18:00:00+01';
अध्याय पढ़ें "कमिट टाइमस्टैम्प ट्रैकिंग"
पोस्टग्रेज विकी में।
संबंधित उपयोगिता मैनुअल में कार्य करता है
।
फ़ंक्शन अस्थिरता केवल VOLATILE
. है क्योंकि लेन-देन आईडी (xid
) प्रति परिभाषा के आसपास लपेट सकते हैं। तो आप कार्यात्मक अनुक्रमणिका नहीं बना सकते उस पर।
आप नकली हो सकते हैं IMMUTABLE
सीमित समय सीमा में अनुप्रयोगों के लिए फ़ंक्शन रैपर में अस्थिरता, लेकिन आपको इसके प्रभावों से अवगत होने की आवश्यकता है। अधिक स्पष्टीकरण के साथ संबंधित मामला:
- क्या PostgreSQL "एक्सेंट असंवेदनशील" का समर्थन करता है "संयोजन?
- अपरिवर्तनीय, स्थिर और अस्थिर कीवर्ड फ़ंक्शन के व्यवहार को कैसे प्रभावित करते हैं?
कई उपयोग मामलों (जैसे आपके?) के लिए जो केवल कमिट्स के अनुक्रम में रुचि रखते हैं (और पूर्ण समय नहीं) यह xmin
के साथ काम करने के लिए अधिक कुशल हो सकता है bigint
. पर कास्ट करें "सीधे" (xmin::text::bigint
) टाइमस्टैम्प प्रतिबद्ध करने के बजाय। (xid
आंतरिक रूप से एक अहस्ताक्षरित पूर्णांक है, ऊपरी आधा जो एक हस्ताक्षरित integer
में फिट नहीं होता है ।) फिर से, संभावित xid रैपराउंड के कारण सीमाओं से अवगत रहें।
इसी कारण से, प्रतिबद्ध टाइमस्टैम्प अनिश्चित काल तक संरक्षित नहीं हैं . छोटे से मध्यम डेटाबेस के लिए, xid
रैपराउंड शायद ही कभी होता है - लेकिन यह अंततः तब होगा जब क्लस्टर लंबे समय तक जीवित रहेगा। अध्याय पढ़ें "लेन-देन आईडी रैपअराउंड विफलताओं की रोकथाम"ए> विवरण के लिए मैनुअल में।