একটি সাধারণ নির্বাচন জিজ্ঞাসা লক অর্জন?


14

আমি এসকিউএল সার্ভারে খুব নতুন, এবং নীচের, খুব সাধারণ selectবিবৃতিটি কোনও লক নেবে কিনা তা বুঝতে চাই ।

Select * from Student;

দয়া করে কেসটি বিবেচনা করুন যেখানে কোনও begin tranব্লকের মধ্যে বক্তব্য চলমান থাকবে না ।


1
এটি আপনার ভাবার চেয়ে অনেক জটিল প্রশ্ন। উত্তরটি অনেক কিছুর উপর নির্ভর করে (সেশন লেনদেনের বিচ্ছিন্নতা স্তরটি কী? প্রতিশ্রুতিবদ্ধ স্ন্যাপশট বিচ্ছিন্নতাটি চালু হয়? স্ক্যান করা সূচীতে সারি বা পৃষ্ঠাগুলির কোনও লক প্রতিরোধের জন্য বিকল্প রয়েছে কি?) এবং চলমান বিবৃতি চলাকালীন পরিবর্তনও করতে পারে (কয়টি? সারণি টেবিলের মধ্যে রয়েছে? টেবিলটি বিভক্ত করা আছে?)। এখানে পড়া শুরু করার জন্য একটি ভাল পয়েন্ট।
জন সেগেল

উত্তর:


5

হ্যাঁ এটি ডিফল্টরূপে যে সারিগুলিতে পড়ে এটি সারিগুলিতে একটি ভাগ করা লক নেয় (এটি ক্লাস্টারড ইনডেক্সের সমস্ত পৃষ্ঠাগুলিতে এটি পড়বে যা একটি ইন্টেন্ট শেয়ার্ড লক নেয়) এটি নোংরা পাঠ্য প্রতিরোধের জন্য করা হয়। তবে এটিকে বাইপাস করার উপায় রয়েছে (এসকিউএল সার্ভারের নোলক ইঙ্গিত রয়েছে)। যদি বিবৃতিটি কোনও প্রথম শুরু না হয় ট্র্যাকের মধ্যে নির্বাচন করা থাকে সেলে স্টেটমেন্টটি চালানোর পরে লকটি প্রকাশ করা হয়।

এখানে আরও তথ্য পাওয়া যাবে:

http://msdn.microsoft.com/en-us/library/ms184286(v=sql.105).aspx http://www.sqlteam.com/article/intr پيداوار-to-locking-in-sql- server


এছাড়াও আপনি লেনদেন বিচ্ছিন্নতা স্তর নির্বিঘ্নে পড়তে সেট করতে পারেন।
জেন

1
সুতরাং যদি নির্বাচিত দশটি সারি পড়েন, তবে দশটি ভাগ করা লকগুলি দশটি সারি পড়া না হওয়া অবধি রাখা হবে বা তারা প্রতি সারিতে অর্জন এবং ছেড়ে দেওয়া হবে?
ইয়ান ওয়ারবার্টন

26

নীচের, খুব সাধারণ সিলেক্ট স্টেটমেন্টটি কোনও লক নেবে কিনা তা আমি বুঝতে চাই

এটি একটি সাধারণ ভ্রান্ত ধারণা যে SELECTডিফল্ট READ COMMITTEDলেনদেনের বিচ্ছিন্নতা স্তরে চলমান একটি কোয়েরি সবসময় নোংরা পাঠ্য প্রতিরোধের জন্য ভাগ করা লকগুলি গ্রহণ করবে ।

এসকিউএল সার্ভার ভাগ করে নেওয়া সারি-স্তরের লকগুলি এড়াতে পারে যখন এগুলি ব্যতীত অনুমোদিত ডেটা পড়ার কোনও আশঙ্কা নেই (যদিও উচ্চ-স্তরের ইন্টেন্ট-শেয়ার্ড (আইএস) লকগুলি এখনও নেওয়া হয়)।

ভাগ সারি কেশ এমনকি যদি হয় গ্রহণ (সম্ভবত কারণ অন্য সমবর্তী লেনদেন পৃষ্ঠা পরিবর্তিত হয়েছে সারিতে হয়) তারা অনেক আগে মুক্তি হতে পারে SELECTবিবৃতি সমাপ্ত হবে।

বেশিরভাগ ক্ষেত্রে সার্ভারের পরবর্তী সারিতে প্রক্রিয়া করার ঠিক আগে সারিটি 'আনলক করা' হয়। এমন পরিস্থিতিতে রয়েছে যেখানে ডিফল্ট বিচ্ছিন্ন স্তরে ভাগ করা লকগুলি বর্তমান বিবৃতিটির শেষে রাখা হয়, তবে লেনদেনের শেষের দিকে নয় ।

NOLOCKসারণীর ইঙ্গিত সহ বর্তমান বিচ্ছিন্নতা স্তরটি ওভাররাইড করা প্রায়শই একটি খারাপ ধারণা

লক করা একটি বাস্তবায়ন বিশদ। এসকিউএল সার্ভার এটি প্রয়োজনীয় বিচ্ছিন্নতা স্তর দ্বারা সরবরাহিত শব্দার্থ গ্যারান্টি পূরণ করে তা নিশ্চিত করার জন্য যখন প্রয়োজন হয় তখন লকগুলি নিয়ে যায় । অবশ্যই এমন সময় রয়েছে যেখানে তালা কেন নেওয়া হয় সে সম্পর্কে কিছুটা জানার পক্ষে দরকারী তবে সেগুলি পূর্বাভাস দেওয়ার চেষ্টা করা প্রায়শই পাল্টা-ফলদায়ক।

এসকিউএল সার্ভার বিচ্ছিন্নতা স্তরগুলির বিভিন্ন ধরণের সরবরাহ করে; আপনার ডেটা গ্রাহকদের প্রয়োজনীয় গ্যারান্টি ও আচরণ প্রদান করে এমন একটি চয়ন করুন।

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