একটি প্রশ্ন যা একটি চ্যাট আলোচনায় উত্থাপিত হয়েছিল:
আমি জানি হ্যাশ যোগ ব্যালআউটে অভ্যন্তরীণভাবে নেস্টেড লুপসের জিনিসগুলিতে স্যুইচ করে।
এসকিউএল সার্ভার হ্যাশ সামগ্রিক বেলআউট (যদি এটি কিছুতেই ঘটতে পারে) জন্য কী করে?
একটি প্রশ্ন যা একটি চ্যাট আলোচনায় উত্থাপিত হয়েছিল:
আমি জানি হ্যাশ যোগ ব্যালআউটে অভ্যন্তরীণভাবে নেস্টেড লুপসের জিনিসগুলিতে স্যুইচ করে।
এসকিউএল সার্ভার হ্যাশ সামগ্রিক বেলআউট (যদি এটি কিছুতেই ঘটতে পারে) জন্য কী করে?
উত্তর:
হ্যাশ যোগ এবং হ্যাশ সমষ্টি উভয়ই একই অপারেটর কোড অভ্যন্তরীণভাবে ব্যবহার করে, যদিও একটি হ্যাশ সমষ্টি কেবলমাত্র একটি একক (বিল্ড) ইনপুট ব্যবহার করে। মৌলিক অপারেশন হ্যাশ সমষ্টিগত হয় ক্রেইগ Freedman দ্বারা বর্ণিত :
হ্যাশ যোগ হিসাবে যেমন হ্যাশ সমষ্টি মেমরি প্রয়োজন। একটি হ্যাশ সমষ্টি সহ কোয়েরি চালানোর আগে, এসকিউএল সার্ভার কোয়েরিটি কার্যকর করতে আমাদের কতটা মেমরি দরকার তা অনুমান করার জন্য কার্ডিনালিটির অনুমান ব্যবহার করে। একটি হ্যাশ যোগদানের সাথে আমরা প্রতিটি বিল্ড সারি সংরক্ষণ করি, সুতরাং মোট মেমরির প্রয়োজনীয়তা বিল্ড সারিগুলির সংখ্যা এবং আকারের সাথে সমানুপাতিক। যোগদানের সারিগুলির সংখ্যা এবং যোগদানের আউটপুট কার্ডিনালিটির জোড়ার মেমরির প্রয়োজনে কোনও প্রভাব নেই। একটি হ্যাশ সমষ্টি সহ, আমরা প্রতিটি দলের জন্য একটি সারি সঞ্চয় করি, সুতরাং মোট মেমরির প্রয়োজনীয়তা আউটপুট গ্রুপ বা সারিগুলির সংখ্যা এবং আকারের সাথে আনুপাতিক। কলাম (গুলি) এবং আরও কম গোষ্ঠী অনুসারে গ্রুপটির স্বতন্ত্র অনন্য মূল্য থাকলে আমাদের কম স্মৃতি দরকার memory কলাম (গুলি) এবং আরও গোষ্ঠী অনুসারে গ্রুপটির আরও অনন্য মূল্যবোধ থাকলে আমাদের আরও মেমরির প্রয়োজন need
তিনি হ্যাশ পুনরাবৃত্তি সম্পর্কে কথা বলতে যান:
সুতরাং, যদি আমরা স্মৃতি থেকে দূরে চলে যাই তবে কী হবে? আবার হ্যাশ জয়েনের মতো, যদি আমাদের স্মৃতিশক্তি শেষ না হয় তবে আমাদের অবশ্যই টেম্পডিবির জন্য সারি ছড়িয়ে দেওয়া শুরু করতে হবে। আমরা এক বা একাধিক বালতি বা পার্টিশনগুলি স্প্রেড বালতি বা পার্টিশনে হ্যাশ যে কোনও অতিরিক্ত নতুন সারি সহ কোনও আংশিকভাবে সমষ্টিগত ফলাফল সহ স্পিল করি। যদিও আমরা ছড়িয়ে পড়া নতুন সারিগুলিকে একত্রিত করার চেষ্টা করি না, আমরা সেগুলি হ্যাশ করি এবং এগুলি কয়েকটি বালতি বা পার্টিশনে ভাগ করি। একবার আমরা সমস্ত ইনপুট গোষ্ঠীগুলির প্রক্রিয়া শেষ করার পরে, আমরা সম্পূর্ণ মেমরির গোষ্ঠীগুলি আউটপুট করি এবং একবারে একসাথে একটি ছিটানো পার্টিশন একত্রিত করে অ্যালগরিদম পুনরাবৃত্তি করি। ছড়িয়ে পড়া সারিগুলিকে একাধিক পার্টিশনে ভাগ করে আমরা প্রতিটি পার্টিশনের আকার হ্রাস করি এবং এইভাবে, অ্যালগরিদমকে অনেকবার পুনরাবৃত্তি করতে হবে এমন ঝুঁকি হ্রাস করি।
হ্যাশ বেলআউট হালকাভাবে নথিভুক্ত, তবে নাচো অ্যালোনসো পোর্তিলো দ্বারা উল্লেখ করেছেন জামিন-বহিষ্কারের আগে হ্যাশ পুনরাবৃত্তির সর্বোচ্চ পুনরাবৃত্তি কী?
মানটি হ'ল পণ্যটিতে একটি স্থির, শক্ত কোডড এবং এর মান পাঁচ (5)। এর অর্থ হ্যাশ স্ক্যান অপারেটর ওয়ার্কস্পেস থেকে প্রদত্ত মেমরির সাথে খাপ খায় না এমন কোনও প্রদত্ত সাব-পার্টিশনের জন্য বাছাই ভিত্তিক অ্যালগরিদম রিসর্ট করার আগে, মূল পার্টিশনটিকে ছোট ছোট পার্টিশনে বিভক্ত করার আগের পাঁচটি প্রচেষ্টা অবশ্যই ঘটেছে।
"হ্যাশ স্ক্যান অপারেটর" উল্লিখিত অভ্যন্তরীণ বর্গ একটি রেফারেন্স আছে CQScanHash
এর মধ্যে sqlmin.dll
। এই শ্রেণিটি হ্যাশ অপারেটরের বাস্তবায়নের নেতৃত্ব দেয় (এর সমস্ত আকারে, আংশিক সমষ্টি এবং প্রবাহ স্বতন্ত্র সহ) আমরা কার্যকর করার পরিকল্পনাগুলিতে দেখি।
এটি আমাদের আপনার প্রশ্নের কেন্দ্রে নিয়ে আসে - বেলআউট অ্যালগরিদম ঠিক কী করে? এটি কি "সাজানো ভিত্তিক" বা "নেস্টেড লুপসের এক ধরণের জিনিস" এর উপর ভিত্তি করে?
এটি আপনার দৃষ্টিকোণের উপর নির্ভর করে তর্কযোগ্যভাবে উভয়ই। যখন হ্যাশ পুনরাবৃত্তি 5 স্তরে পৌঁছায়, ইন-মেমরি হ্যাশ পার্টিশনটি হ্যাশ সারণী হতে হ্যাশ মানগুলিতে প্রাথমিকভাবে খালি বি-ট্রি সূচকে পরিবর্তিত হয়। একক পূর্বে ছড়িয়ে পড়া হ্যাশ পার্টিশনের প্রতিটি সারিটি বি-ট্রি সূচকে সন্ধান করা হয় এবং যথাযথ হিসাবে সন্নিবেশ করা (নতুন গ্রুপ) বা আপডেট (সমষ্টি বজায় রাখা) করা হয়।
একটি বি-ট্রি-তে আনর্ডার্ড সন্নিবেশের এই সিরিজটি সন্নিবেশ সাজানোর বা একটি সূচীযুক্ত নেস্টেড লুপস লুক হিসাবে দেখা যায় ।
যাই হোক না কেন, এই ফ্যালব্যাক অ্যালগরিদম আরও মেমরি বরাদ্দ না করে শেষ পর্যন্ত সম্পূর্ণ করার গ্যারান্টিযুক্ত। ওভারফ্লো পার্টিশন থেকে সমস্ত গ্রুপিং কীগুলি এবং সমষ্টিগুলি ধরে রাখার জন্য খ-গাছের জন্য উপলব্ধ স্থান পর্যাপ্ত না হলে এর জন্য একাধিক পাসের প্রয়োজন হতে পারে।
বি-ট্রি সূচকটি ধারণ করার জন্য উপলব্ধ মেমরিটি শেষ হয়ে গেলে, পরবর্তী কোনও সারি (বর্তমান স্পিল বিভাজন থেকে) একক নতুন টেম্পডিবি পার্টিশনে (যা ছোট হওয়ার গ্যারান্টিযুক্ত ) প্রেরণ করা হয় এবং প্রক্রিয়াটি প্রয়োজনীয় হিসাবে পুনরাবৃত্তি করে। স্পিল স্তরটি 5 এ রয়ে গেছে কারণ হ্যাশ পুনরাবৃত্তি শেষ হয়েছে। কিছু প্রক্রিয়া বিবরণ অননুমোদিত টریس পতাকা 7357 দিয়ে পর্যবেক্ষণ করা যেতে পারে।