আমি এই বিতর্কের উভয় পক্ষেই অনেক কিছু পড়েছি: কাঁচা প্রশ্নের উপর কেবল সঞ্চিত পদ্ধতি ব্যবহার করে কি কোনও লক্ষণীয় পারফরম্যান্স লাভ হতে পারে? আমি বিশেষত এসকিউএল সার্ভারে আগ্রহী তবে কোনও এবং সমস্ত ডাটাবেসে আগ্রহী।
আমি এই বিতর্কের উভয় পক্ষেই অনেক কিছু পড়েছি: কাঁচা প্রশ্নের উপর কেবল সঞ্চিত পদ্ধতি ব্যবহার করে কি কোনও লক্ষণীয় পারফরম্যান্স লাভ হতে পারে? আমি বিশেষত এসকিউএল সার্ভারে আগ্রহী তবে কোনও এবং সমস্ত ডাটাবেসে আগ্রহী।
উত্তর:
এটি এসকিউএল সার্ভার ২০০৮ এবং এর চেয়ে বেশি এর চেয়ে কম তবে এটি এখনও রয়েছে। এটি যেটি নেমে আসে তা হ'ল এক্সিকিউশন প্ল্যান ক্যাশে এবং এসকিউএল সার্ভার যে প্রশ্নগুলি প্রেরণ করা হয় তা অটো-প্যারামিট্রাইজ করতে সক্ষম হয় stored সঞ্চিত প্রক্রিয়াগুলি ব্যবহার করার সময় (যেগুলির মধ্যে ডায়নামিক এসকিউএল নেই) প্রশ্নগুলি ইতিমধ্যে প্যারামাইট্রাইজ করা হয়েছে যাতে এসকিউএল সার্ভার না করে ' পরিকল্পনাটি ইতিমধ্যে পরিকল্পনার ক্যাশে সঞ্চিত হওয়ায় প্রতিটি ক্যোয়ারির জন্য পরিকল্পনা তৈরি করার দরকার নেই for
এবং সুরক্ষিত সমস্যাগুলি (গতিশীল এসকিউএল, ন্যূনতম অনুমতি ইত্যাদি) সম্পর্কে ভুলে যাবেন না যা সঞ্চিত পদ্ধতি ব্যবহার করার পরে চলে যায়।
অ্যাপ্লিকেশনটি টেবিলগুলিতে ডেটা নির্বাচন করতে, সন্নিবেশ করতে, আপডেট করতে এবং মুছতে বেস টেবিলগুলির বিপরীতে গতিশীল এসকিউএল ব্যবহার করছে যখন অ্যাপ্লিকেশনটির সরাসরি সেই সমস্ত বস্তুর অধিকার থাকতে হবে rights সুতরাং কেউ যদি সার্ভারে উঠতে এসকিউএল ইঞ্জেকশন ব্যবহার করে তবে সেই টেবিলগুলির সমস্ত ডেটা জিজ্ঞাসা, পরিবর্তন বা মুছে ফেলার অধিকার তাদের রয়েছে।
আপনি যদি সঞ্চিত প্রক্রিয়া ব্যবহার করে থাকেন তবে কেবলমাত্র সঞ্চিত পদ্ধতিটি ফিরে আসবে এমন তথ্য ফিরে পেয়ে কেবলমাত্র সঞ্চিত পদ্ধতিগুলি কার্যকর করার অধিকার রয়েছে। দ্রুত মুছে ফেলার বিবৃতি জারি করার এবং সমস্ত কিছু দূরে ফুটিয়ে তোলার পরিবর্তে তাদের ডেটা মুছতে কী কী পদ্ধতি ব্যবহার করা যেতে পারে তা বুঝতে হবে এবং কীভাবে এটি পদ্ধতি ব্যবহার করতে হবে তা নির্ধারণ করতে হবে।
প্রদত্ত যে এসকিউএল ইঞ্জেকশনটি একটি ডাটাবেসের মধ্যে প্রবেশের সহজতম উপায়, এটি এক ধরণের গুরুত্বপূর্ণ।
ডেনির উত্তরের সংযোজন হিসাবে, এমন সিস্টেমগুলি খুঁজে পাওয়া অস্বাভাবিক নয় যেখানে প্র্যাক্সের উপরে অনুসন্ধানের প্রশ্নগুলির ফলস্বরূপ একক বা স্বল্প ব্যবহারের অ্যাড-হক এক্সিকিউশন পরিকল্পনাগুলিতে উল্লেখযোগ্য বাফার পুল মেমরি নষ্ট হয়।
ইদানীং সবচেয়ে খারাপ ক্ষেত্রে, 8 গিগাবাইট বরাদ্দ একটি উদাহরণে, 3 জিবি প্ল্যান ক্যাশে, 2.5 জিবি একক ব্যবহারের পরিকল্পনা। এর বেশিরভাগই এসকিউএল ২০০৫ হয়েছে তাই এটি অ্যাড-হক ওয়ার্ক লোড সেটিংয়ের জন্য অনুকূলিত করার চেষ্টা করার বিকল্প ছিল না।
কাঁচা প্রশ্নের উপরের পদ্ধতির ন্যায়সঙ্গততায় পারফরম্যান্স অন্তর্ভুক্ত করা অবশ্যই আরও কঠিন হয়ে উঠছে। আমার পক্ষে এখন সবচেয়ে শক্তিশালী যুক্তি হ'ল "আপনি যদি পদ্ধতি ব্যবহার করেন তবে পারফরম্যান্সের সমস্যা দেখা দিলে আমার পক্ষে সাহায্য করা অনেক সহজ"। একটি গতিশীল / লিনক / ওআরএম ইন্টারফেস আপনাকে সুর দেওয়ার থেকে বাধা দেয় না, তবে এটি আপনার বিকল্পগুলিকে মারাত্মকভাবে সীমাবদ্ধ করতে পারে।
এসকিউএল সার্ভার একইভাবে সঞ্চিত পদ্ধতি এবং অ্যাড-হক এসকিউএলকে ক্যাচ করে এবং অনুকূলিত করে। উদাহরণস্বরূপ, এই পদ্ধতি:
create procedure dbo.TestSB(@id int) as select * from Orders where id = @id
অপ্টিমাইজড এবং একইভাবে ক্যাশে করা হবে:
select * from Orders where id = @id
তবে হার্ডকডযুক্ত মানের কারণে নিম্নলিখিত অ্যাডহক এসকিউএল কার্যকরভাবে ক্যাশে করা যায় না:
select * from Orders where id = 42
পারফরম্যান্স একই হলেও, সঞ্চিত পদ্ধতি ব্যবহারের ভাল কারণ রয়েছে। সঞ্চিত পদ্ধতি ডিবিএ এবং অ্যাপ্লিকেশন বিকাশকারীদের মধ্যে একটি স্পষ্ট বিভাজন সরবরাহ করে। আপনার মূল্যবান ডেটা এবং ক্রমাগত পরিবর্তনশীল প্রোগ্রামগুলির মধ্যে প্রতিরক্ষার একটি অতিরিক্ত স্তর রাখা ভাল :)
id = 42
এ সাধারণ / জোর করে প্যারামিটারাইজেশন সেটিংসের উপর নির্ভর করে একই পরিকল্পনাটি ব্যবহার করে ক্যোয়ারীটি অনুকূল করা যায়। অবশ্যই প্রশ্নের সঠিকভাবে পরামিতি করা উচিত ized :-)