যখন ডেটার জন্য কোনও শারীরিক মেমরি বাকী থাকে না, তখন এসকিউএল সার্ভার ইতিমধ্যে বিদ্যমান ডেটাটিকে TEMPDB এ সরিয়ে দেয়
আপনি যে নিবন্ধটির সাথে লিঙ্ক করেছেন সেটি সর্বোত্তমভাবে বিভ্রান্তিকর এবং কিছু জায়গায় ভুল। আমি মনে করি লেখক কিছু জটিল বিষয়কে অতি-সরল করার চেষ্টা করছেন এবং এটি করার ফলে কিছুটা দূরে গিয়েছিলেন।
এসকিউএল সার্ভার ডেটা মেমরি থেকে (বাফার পুল) সেইভাবে টেম্পিডবিতে স্থানান্তরিত করে না। এটি একটি "সাম্প্রতিক ব্যবহৃত ব্যবহৃত" ক্যাচিং কৌশল (সাধারণভাবে) ব্যবহার করে, সুতরাং যদি মেমরির চাপ থাকে এবং মেমরিতে নতুন ডেটা টানতে হয় তবে এসকিউএল সার্ভার নতুন ডেটা সামঞ্জস্য করতে বাফার পুল থেকে এলআরইউ ডেটা বের করবে। এই আচরণটি প্রায়শই "পেজ লাইফ প্রত্যাশা" (পিএলই) নামে একটি পারফোন কাউন্টার দ্বারা পর্যবেক্ষণ করা হয় :
পিএলই-এর সংজ্ঞাটি সেকেন্ডের মধ্যে প্রত্যাশিত সময়, যা বাফার পুলে একটি ডেটা ফাইল পৃষ্ঠা পড়ে থাকে (ডেটা ফাইলের পৃষ্ঠাগুলির মেমরি ক্যাশে) মেমোরি থেকে দূরে রাখার আগে মেমরিতে থাকবে অন্য কোনও ডেটা রাখার জন্য ফাইল পৃষ্ঠা। পিএলই ভাবার আরেকটি উপায় হ'ল পৃষ্ঠাগুলি ডিস্ক থেকে পড়ার জন্য ফাঁকা স্থান তৈরি করার জন্য বাফার পুলের উপর চাপের তাত্ক্ষণিক পরিমাপ। এই উভয় সংজ্ঞা জন্য, একটি উচ্চতর সংখ্যা ভাল।
ক্যোয়ারী এক্সিকিউশন চলাকালীন, এসকিউএল সার্ভার নির্দিষ্ট ক্রিয়াকলাপের জন্য টেম্পিডবি ব্যবহার করতে পারে। এটি সাধারণত করা হয় যদি অনুমানগুলি খারাপ হয় তবে কম উপলব্ধ মেমরি এই আচরণকে প্রভাবিত করতে পারে।
কিছু অপারেশন যা এইভাবে টেম্পডিবিতে "স্পিল" করতে পারে সেগুলি হ্যাশিং সারিগুলি (যোগ দেয় বা সমষ্টি ইত্যাদির জন্য), মেমরিতে সারিগুলি বাছাই করা এবং সমান্তরাল ক্যোয়ারী এক্সিকিউশন চলাকালীন সারিগুলিকে বাফারিং করে।
ব্যবহারকারীর অনুসন্ধানগুলি স্পষ্টভাবে টেম্পডিবিও (বৈশ্বিক বা স্থানীয় অস্থায়ী টেবিলগুলির সাথে) ব্যবহার করতে পারে এবং স্পষ্টতই টেম্পডিবি ব্যবহার করতে পারে (স্ন্যাপশট বা প্রতিশ্রুত স্ন্যাপশট বিচ্ছিন্নতার স্তর সহ)।
এই অবস্থার কোনওটিই আপনার উদ্ধৃত বক্তব্যটির সাথে সত্যই খাপ খায় না।
যখন পর্যাপ্ত শারীরিক স্মৃতি অবশিষ্ট নেই, অপারেটিং সিস্টেমটি PAGE ফাইলটি ব্যবহার করতে পারে এবং দৈহিক মেমরি থেকে ডেটা এতে স্থানান্তর করতে পারে
এটি অবশ্যই ঘটতে পারে এবং বেশিরভাগ অংশে এসকিউএল সার্ভারের নিয়ন্ত্রণের বাইরে থাকে। কিছু ধরণের ওএস-লেভেল পেজিং রোধ করার চেষ্টা করতে পারেন, যথা "মেমরিতে লক পেজ" (এলপিআইএম) চালু করে :
এই উইন্ডোজ নীতিটি নির্ধারণ করে যে কোনও অ্যাকাউন্টগুলিকে শারীরিক মেমরিতে ডেটা রাখতে কোনও প্রক্রিয়া ব্যবহার করতে পারে, যা ডিস্কে ভার্চুয়াল মেমরিতে ডেটা পৃষ্ঠাভুক্ত করা থেকে সিস্টেমকে বাধা দেয়।
সুতরাং আমরা ডিস্কে পৃষ্ঠাযুক্ত হওয়া থেকে কী বাধা দিতে পারি?
এসকিউএল সার্ভার ২০১২ এর আগে, "একক পৃষ্ঠা অ্যালোকেটর" নামক উপাদানগুলির মাধ্যমে বরাদ্দ করা পৃষ্ঠাগুলি মেমরিতে লক করা হয়েছিল (পেজড করা যায়নি)। এর মধ্যে রয়েছে বাফার পুল (ডাটাবেস পৃষ্ঠাগুলি), পদ্ধতি ক্যাশে এবং মেমরির কিছু অন্যান্য ক্ষেত্র।
দেখুন লক পেজ, ভয় টাস্ক ম্যানেজার, এবং ওয়ার্কিং সেট করুন ... সঙ্গে মজা বিস্তারিত জানার জন্য, বিশেষ করে অধ্যায় "4. এখন আমি জানি যে SQL সার্ভার x64 এ ব্যবহার করতে পারেন" লকড পেজ ", ঠিক কি লক হয়ে গেছে?" অতিরিক্ত সম্পর্কিত পড়া এখানে পাওয়া যাবে: দুর্দান্ত এসকিউএল সার্ভার বিতর্ক: মেমরিতে লক পৃষ্ঠা
এসকিউএল সার্ভার ২০১২ এবং তার পরে, কোনও "একক পৃষ্ঠা বরাদ্দকারী" নেই (একক এবং একাধিক পৃষ্ঠার বরাদ্দকারীগুলিকে একত্রীকরণ করা হয়েছিল, মেমরিটির প্রতি গভীরতর দৃষ্টিভঙ্গি অনুসারে - এসকিউএল সার্ভার 2012/2014 )। কী, ঠিক কী, পেজ করা যায় না তার বিশদটি আমি যে কোনও জায়গায় দেখেছি সে বিষয়ে বিস্তারিতভাবে নথিভুক্ত করা হয়নি। আপনি একটি ক্যোয়ারী ব্যবহার করতে পারেন এই মত তা দেখতে হয় লক:
select osn.node_id, osn.memory_node_id, osn.node_state_desc, omn.locked_page_allocations_kb
from sys.dm_os_memory_nodes omn
inner join sys.dm_os_nodes osn on (omn.memory_node_id = osn.memory_node_id)
where osn.node_state_desc <> 'ONLINE DAC'
একই এমএস সাপোর্ট আর্টিকেল অনুযায়ী, আপনি DBCC MEMORYSTATUS
কতটা মেমরি "লকড" রয়েছে তা দেখতে ব্যবহার করতে পারেন।
পার্শ্ব নোট হিসাবে, আপনি এসকিউএল সার্ভারের ওয়ার্কিং সেটটি ত্রুটি লগটিতে ওএস দ্বারা পৃষ্ঠাযুক্ত হওয়ার প্রমাণ দেখতে পাচ্ছেন। এর মতো দেখতে বার্তাগুলি থাকবে:
2019-09-02 10: 19: 27.29 spid11s স্ক্যালি সার্ভার প্রক্রিয়া মেমরির একটি উল্লেখযোগ্য অংশ পৃষ্ঠাযুক্ত হয়ে গেছে। এর ফলে কর্মক্ষমতা হ্রাস পেতে পারে। সময়কাল: 329 সেকেন্ড কার্যকারিতা সেট (কেবি): 68780, প্রতিশ্রুতিবদ্ধ (কেবি): 244052, মেমরির ব্যবহার: 28%।