এর নিয়মিত কলামগুলি ছাড়াও, পোস্টগ্রিস টেবিলগুলিতেও বিভিন্ন সিস্টেম কলাম উপলব্ধ। এর মধ্যে xmin
একটি, সারি তৈরি করতে ব্যবহৃত লেনদেনের আইডি সঞ্চয় করে। এর ডেটা টাইপটি হল xid
, চারটি বাইট পূর্ণসংখ্যা যা কোনও কোনও সময়ে (যেমন অদ্বিতীয়ভাবে অনন্য নয়) চারপাশে আবৃত হয়। ফলস্বরূপ ফাংশনটি txid_current()
বর্তমান লেনদেন আইডিটি ফেরত দেয়, তবে হিসাবে bigint
, কারণ এটি "" মহাকাশ "কাউন্টার দিয়ে প্রসারিত হয় যাতে এটি কোনও ইনস্টলেশন চলাকালীন সময়ে মোড়ানো না হয়" ( ম্যানুয়ালটি উদ্ধৃত করার জন্য )।
যদি লেনদেনের মোড়ক এখনও না ঘটে তবে উভয় মান মিলছে বলে মনে হচ্ছে:
# CREATE TABLE test (label text);
CREATE TABLE
# INSERT INTO test VALUES ('test') RETURNING txid_current();
txid_current
--------------
674500
(1 row)
INSERT 0 1
# SELECT xmin FROM test;
xmin
--------
674500
(1 row)
তবে আমি ভাবছি: এই দুটি মান কি সর্বদা তুলনামূলক? যতদূর আমি বুঝতে পেরেছি, txid_current()
লেনদেনের আইডি মোড়কের পরে অনন্য মান প্রদান করা অব্যাহত রাখবে (সর্বাধিক 2 ^ 32 লেনদেন) এবং xmin
শূন্য থেকে শুরু হবে। এর অর্থ উভয়ই সেই সময়ে বিভিন্ন মান ফিরিয়ে দিতে শুরু করে?
এবং যদি এটি সত্য হয়, xid
কোনও txid_current()
ফলাফলের নিয়মিত নিষ্কাশন করার কোনও উপায় আছে যাতে এটি xmin
কোনও টেবিলে প্রবেশের সাথে মিলিত হয় (উদাহরণস্বরূপ txid_current()
পূর্ণসংখ্যাতে কাস্টিং )?
সম্পাদনা : এটিকে আরও পরিষ্কার করে দিন যে কোনও লেনদেন আইডি মোড়ক পরে যা ঘটে তা নিয়ে আমি যত্নশীল, যা সম্ভবত 2 ^ 32 লেনদেনের অনেক আগে ঘটে before মন্তব্যগুলিতে এটি লক্ষ করার জন্য ড্যানিয়েল ভুরিটকে ধন্যবাদ।
xmin
হিমশীতল হওয়ার পরেও প্রশ্নটি এখনও স্থায়ী হয় যে xmin
তখনকার মৃত্যুদণ্ড কার্যকর হওয়া সময়ের সাথে আরও নতুন (নিয়মিত) তুলনা করা যায় txid_current()
।
VACUUM FREEZE
এবং ওভাররাইটxmin
দীর্ঘ সারি উপর সামনে 2 ^ 32 Wraparound। এই বিষয়টির উপর একটি ওভারভিউয়ের জন্য আপনার টিপলসকে হিমায়িত করে দেখুন ।