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

लेनदेन करते समय परमाणु रूप से सीरियल मान सेट करें

पोस्टग्रेज 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 सीमित समय सीमा में अनुप्रयोगों के लिए फ़ंक्शन रैपर में अस्थिरता, लेकिन आपको इसके प्रभावों से अवगत होने की आवश्यकता है। अधिक स्पष्टीकरण के साथ संबंधित मामला:

कई उपयोग मामलों (जैसे आपके?) के लिए जो केवल कमिट्स के अनुक्रम में रुचि रखते हैं (और पूर्ण समय नहीं) यह xmin के साथ काम करने के लिए अधिक कुशल हो सकता है bigint . पर कास्ट करें "सीधे" (xmin::text::bigint ) टाइमस्टैम्प प्रतिबद्ध करने के बजाय। (xid आंतरिक रूप से एक अहस्ताक्षरित पूर्णांक है, ऊपरी आधा जो एक हस्ताक्षरित integer में फिट नहीं होता है ।) फिर से, संभावित xid रैपराउंड के कारण सीमाओं से अवगत रहें।

इसी कारण से, प्रतिबद्ध टाइमस्टैम्प अनिश्चित काल तक संरक्षित नहीं हैं . छोटे से मध्यम डेटाबेस के लिए, xid रैपराउंड शायद ही कभी होता है - लेकिन यह अंततः तब होगा जब क्लस्टर लंबे समय तक जीवित रहेगा। अध्याय पढ़ें "लेन-देन आईडी रैपअराउंड विफलताओं की रोकथाम" विवरण के लिए मैनुअल में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL LIMIT WHERE क्लॉज के साथ

  2. PostgreSQL में विदेशी कुंजी वाली पंक्तियां हटाएं

  3. सी # विंडोज मोबाइल 6.5 ऐप को पोस्टग्रेस डेटाबेस से कैसे कनेक्ट करें?

  4. PostgreSQL को केवल मेमोरी में चलाना

  5. मैं एक विशिष्ट समय क्षेत्र में "आज की शुरुआत" कैसे निर्दिष्ट करूं?