আমি কি একই অনির্কিত লেনদেনে dataোকানো ডেটা নির্বাচন করতে পারি?


21

হতে পারে এটি বোবা শুরুর প্রশ্ন, তবে আমি কোথাও উত্তর খুঁজে পাচ্ছি না। আমি যেখানেই পড়েছি Transaction Isolationযেখানে সমবর্তী লেনদেনের মধ্যে ডেটার দৃশ্যমানতার সমাধান করে about আমার উদ্বেগ হ'ল একক লেনদেনের মধ্যে আচরণ।

আমি যদি কোনও লেনদেন শুরু করি, কিছু তথ্য সন্নিবেশ করলাম, আমি কি তাদের ঠিক পরে নির্বাচন করতে সক্ষম হব - এখনও একই, তবুও অনির্ধারিত, লেনদেনের মধ্যে? যদি হ্যাঁ, একই আচরণের ক্ষেত্রে একই সাথে লেনদেনের ক্ষেত্রে উল্লিখিত লেনদেনের বিচ্ছিন্নতার মতো পরিবর্তন করা যেতে পারে?

সুনির্দিষ্টভাবে বলতে গেলে, আমি পোস্টগ্র্যাসকিউএল 9.4 লক্ষ্য করছি।

উত্তর:


17

হ্যাঁ.
আপনি একই লেনদেনের মধ্যে যা কিছু করেছিলেন তা একই লেনদেনের অভ্যন্তরের পরবর্তী কমান্ডগুলিতে দৃশ্যমান। প্রতিশ্রুতিবদ্ধ না হওয়া পর্যন্ত কেবল অন্য লেনদেনের জন্য নয়। "নোংরা পাঠ্য" যেখানে সম্ভব ( ব্যতিরেকে এটি আপনার প্রশ্নকে প্রভাবিত করে না) বাদে সমস্ত বিচ্ছিন্ন স্তরের ক্ষেত্রে এটি সত্য Read uncommitted

এটি প্রতিটি টেবিল সারির জন্য বয়স নির্ধারণের এবং দৃশ্যমানতার উপর ভিত্তি করে এমভিসিসি মডেল (মাল্টিভেরিশন কনকুরન્સી নিয়ন্ত্রণ) সাথে প্রয়োগ করা হয়েছে TransactionId। একই লেনদেনে লিখিত প্রতিটি নতুন সারি সংস্করণ একই হয় xminএবং এটি "একই সাথে" ঘটেছিল বলে মনে করা হয়।

একই কমান্ডে একাধিক সিটিই (সাধারণ সারণী এক্সপ্রেশন) এর জন্য একটি কর্নার কেস রয়েছে । কেউ ভাবেন যে এগুলি ক্রমানুসারে কার্যকর করা হয়েছে, তবে একটি সিটিই অন্যকে রেফারেন্স না দিলে তাদের ক্রমটি স্বেচ্ছাচারিত হয়। এবং তারা সবাই ক্যোয়ারির শুরু থেকে একই স্ন্যাপশটটি দেখে।

উদাহরণ:

উন্নত উদাহরণ:


3

আসুন চেষ্টা করুন:

CREATE OR REPLACE FUNCTION public.sp_get_user()
 RETURNS json
 LANGUAGE plpgsql
AS $function$BEGIN

INSERT INTO users (name, password) VALUES ('deadeye', 'test');
RETURN row_to_json(row) FROM (SELECT name, password FROM users WHERE name = 'deadeye') row;

END;$function$

এখন, পরীক্ষা করা যাক:

SELECT sp_get_user();
{"name":"deadeye","password":"test"}

এটি কাজ করে! এরউইন যেমন বলেছিলেন, লেনদেনে তৈরি সমস্ত কিছুই লেনদেনের অভ্যন্তরে দৃশ্যমান। বিচ্ছিন্নতা কেবল বিভিন্ন থ্রেডের মধ্যে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.