কম্পিউটার টিউটোরিয়াল

SQL Server ডাটাবেস কম্প্যাটিবিলিটি লেভেল বোঝা: পারফরম্যান্স ও ফিচারের প্রভাব

ডাটাবেস কম্প্যাটিবিলিটি লেভেল, ডাটাবেস লেভেল সেটিংগুলির একটি, একটি ডাটাবেস কীভাবে কাজ করে তা প্রভাবিত করে। Microsoft® SQL Server®-এর প্রতিটি নতুন ভার্সন অনেক নতুন ফিচার নিয়ে আসে, যestar অধিকাংশ নতুন কিওয়ার্ডের প্রয়োজন হয় এবং পূর্ববর্তী ভার্সনগুলিতে বিদ্যমান কিছু আচরণ পরিবর্তন করে। সর্বোচ্চ ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদান করার জন্য, Microsoft আমাদের নিজস্ব প্রয়োজন অনুযায়ী কম্প্যাটিবিলিটি লেভেল সেট করতে দেয়।

ডাটাবেস কম্প্যাটিবিলিটি লেভেল ডিফল্টস

ডিফল্টভাবে, প্রতিটি ডাটাবেস মডেল ডাটাবেস ভার্সন থেকে তৈরি হওয়ার কম্প্যাটিবিলিটি লেভেল ইনহেরিট করে। উদাহরণস্বরূপ, একটি SQL Server 2012 ডাটাবেসের কম্প্যাটিবিলিটি লেভেল ডিফল্টভাবে 110 হয় যদি না আপনি এটি পরিবর্তন করেন।

রিস্টোরের পর কম্প্যাটিবিলিটি লেভেল

যখন আপনি SQL-এর পুরানো ভার্সনে নেওয়া একটি ডাটাবেস ব্যাকআপ রিস্টোর করেন, ডাটাবেস কম্প্যাটিবিলিটি লেভেল সেট रहता है যা ব্যাকআপ নেওয়া ইনস্ট্যান্সে ছিল, যদি না সোর্স কম্প্যাটিবিলিটি লেভেল ন্যূনতম সাপোর্টেড লেভেলের চেয়ে কম হয়। সেক্ষেত্রে, ডাটাবেস কম্প্যাটিবিলিটি লেভেল ন্যূনতম সাপোর্টেড ভার্সনে পরিবর্তিত হয়। উদাহরণস্বরূপ, যদি আমরা একটি SQL Server 2005 ডাটাবেস ব্যাকআপ SQL Server 2017-এ রিস্টোর করি, তবে রিস্টোর করা ডাটাবেসের কম্প্যাটিবিলিটি লেভেল 100-এ সেট হবে কারণ এটি SQL 2017-এর ন্যূনতম সাপোর্টেড লেভেল।

আপগ্রেডের পর কম্প্যাটিবিলিটি লেভেল

tempdb, model, msdb, এবং resource ডাটাবেসগুলোর কম্প্যাটিবিলিটি লেভেল আপগ্রেডের পর বর্তমান কম্প্যাটিবিলিটি লেভেলে সেট করা হয়। মাস্টার সিস্টেম ডাটাবেস আপগ্রেডের আগে যা কম্প্যাটিবিলিটি লেভেল ছিল তা ধরে রাখে।

কম্প্যাটিবিলিটি লেভেল নির্ধারণ করুন

বর্তমান কম্প্যাটিবিলিটি লেভেল নির্ধারণ করতে, sys.databases-এর compatibility_level কলাম কুয়েরি করুন।

একটি ভিন্ন কম্প্যাটিবিলিটি লেভেলে পরিবর্তন করতে, নিচের উদাহরণে দেখানোatcher ALTER DATABASE কমান্ড ব্যবহার করুন:

Use Master Go ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = <compatibility-level>; 

আপনি যদি পছন্দ করেন, আপনি উইজার্ড ব্যবহার করে কম্প্যাটিবিলিটি লেভেল পরিবর্তন করতে পারেন। য যদি ডাটাবেস অনলাইনে ব্যবহারকারীদের দ্বারা অ্যাক্সেস করা হয়, আপনাকে প্রথমে ডাটাবেসকে সিঙ্গেল-ইউজার মোডে পরিবর্তন করা উচিত। তারপর, উইজার্ড ব্যবহার করে লেভেল পরিবর্তন করার পর, আপনাকে ডাটাবেসকে মাল্টি-ইউজার মোডে ফেরত আনতে হবে।

উইজার্ড দিয়ে কম্প্যাটিবিলিটি লেভেল পরিবর্তন করতে, ডাটাবেস → প্রপার্টি → অপশন → ডাটাবেস কম্প্যাটিবিলিটি লেভেল রাইট-ক্লিক করুন নিচের ছবিতে দেখানোatcher:

SQL Server ডাটাবেস কম্প্যাটিবিলিটি লেভেল বোঝা: পারফরম্যান্স ও ফিচারের প্রভাব (https://bd.wsxdn.com/UploadFiles_8203/202207/2022070812110977.png)

ডিফল্ট এবং সাপোর্টেড কম্প্যাটিবিলিটি লেভেল

নিচের টেবিলটি SQL Server ভার্সনগুলোর সাথে তাদের ডিফল্ট কম্প্যাটিবিলিটি এবং সাপোর্টেড কম্প্যাটিবিলিটি লেভেলের লিস্ট দেখায়:

SQL Server ডাটাবেস কম্প্যাটিবিলিটি লেভেল বোঝা: পারফরম্যান্স ও ফিচারের প্রভাব (https://bd.wsxdn.com/UploadFiles_8203/202207/2022070812110959.png)

সোর্স: https://www.sqlskills.com/blogs/glenn/database-compatibility-level-in-sql-server/

ডাটাবেস কম্প্যাটিবিলিটি লেভেল এবং পারফরম্যান্স

SQL 2014-এর আগের SQL Server ভার্সনগুলিতে, ডাটাবেস অ্যাডমিনিস্ট্রেটররা পারফরম্যান্স পারস্পেক্টিভ থেকে ডাটাবেস কম্প্যাটিবিলিটি লেভেল নিয়ে চিন্তিত হতেন না। ডাটাবেস কম্প্যাটিবিলিটি লেভেল মূলত সেই ভার্সনে চালু করা নতুন ফিচারগুলো ব্যবহার করা যাবে কিনা অথবা নন-সাপোর্টেড ফিচারগুলো ডিজেবল করা থাকবে কিনা তা কন্ট্রোল করার একটি মেকানিজম হিসেবে ব্যবহার হতো। এটি ব্যাকওয়ার্ড কম্প্যাটিবিলিটি কন্ট্রোল করার জন্যও ব্যবহার হতো।

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

SQL Server 2014 থেকে, কম্প্যাটিবিলিটি লেভেল 120 বা তার উপরে চলমান যেকোনো ডাটাবেস নতুন কার্ডিন্যালিটি এস্টিমেট ফাংশন ব্যবহার করতে পারে। কার্ডিন্যালিটি এস্টিমেশন হলো वह লজিক যা নির্ধারণ করে SQL Server কীভাবে একটি কুয়েরি এক্সিকিউট করবে, এর এস্টিমেটেড কস্টের ভিত্তিতে। এস্টিমেশনটি সেই কুয়েরিতে জড়িত অবজেক্টসের সাথে যুক্ত পরিসংখ্যান থেকে ইনপুট ব্যবহার করে ক্যালকুলেট করা হয়। প্র্যাক্টিক্যালি, হাই-লেভেলে, কার্ডিন্যালিটি এস্টিমেট হলো রো-কাউন্ট এস্টিমেট যেটি কম্বাইন করা থাকে ভ্যালু ডিস্ট্রিবিউশন, ডISTINCT ভ্যালু কাউন্ট, এবং টেবিল এবং কুয়েরিতে রেফারেন্স করা অবজেক্টসে থাকা ডুপ্লিকেট কাউন্টের ইনফরমেশনের সাথে। এই এস্টিমেটগুলো ভুল হলে অপ্রয়োজনীয় ডিস্ক I/O হতে পারে ইনসফিশিয়েন্ট মেমরি গ্রান্টসের কারণে (যেমন TempDB স্পিলস) অথবা একটি সিরিয়াল প্লান এক্সিকিউশন প্যারালেল প্লান এক্সিকিউশনের চেয়ে বেছে নেওয়ার কারণে, এগুলোর মধ্যে কিছু নাম করা যায়। আমি আমার পরবর্তী ব্লগ পোস্টে কার্ডিন্যালিটি এস্টিমেশন সম্পর্কে আরো আলোচনা করব।

কম্প্যাটিবিলিটি লেভেল পরিবর্তনের প্রভাব

কম্প্যাটিবিলিটি লেভেল পরিবর্তন করা ডাটাবেসকে তার ফিচার সেট পরিবর্তন করার জন্য বলে। অর্থাৎ, কিছু ফিচার যোগ হয়, এবং একই সাথে, কিছু পুরানো ফিচার সরানো হয়। উদাহরণস্বরূপ, FOR BROWSE ক্লজ INSERT এবং SELECT INTO স্টেটমেন্টগুলিতে কম্প্যাটিবিলিটি লেভেল 100-এ অনুমোদিত নয়, এবং কম্প্যাটিবিলিটি লেভেল 90-এ অনুমোদিত কিন্তু উপেক্ষা করা হয়। যদি আপনার অ্যাপ্লিকেশন এই ফিচারটি ব্যবহার করে, এই পরিবর্তনটি অপ্রত্যাশিত ফলাফল আনে।

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

উপসংহার

ডাটাবেস কম্প্যাটিবিলিটি লেভেল সংজ্ঞায়িত করে SQL Server কীভাবে নির্দিষ্ট ফিচারগুলো ব্যবহার করে। স্পেসিফিক্যালি, এটি সেগুলোকেও একটি নির্দিষ্ট SQL Server ভার্সনের মতো আচরণ করতে বাধ্য করে, যা সাধারণত কিছু লেভেলের ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদানের জন্য করা হয়। যেহেতু এটি একটি ডাটাবেস প্রপার্টি, কম্প্যাটিবিলিটি শুধুমাত্র সেই নির্দিষ্ট ডাটাবেসের ডাটাবেস লেভেল ফিচারগুলোক প্রভাবিত করে।

আপনি যদি একটি ডাটাবেস আপগ্রেড করেন এটির মাধ্যমে একটি উচ্চ ভার্সনের সার্ভারে সরিয়ে অথবা ইন-প্লেস ইনস্ট্যান্স আপগ্রেড করে, কম্প্যাটিবিলিটি লেভেল একই থাকে যতক্ষণ না সেই লেভেল সাপোর্টেড থাকে।

যদি কম্প্যাটিবিলিটি লেভেল SQL 2014 বা উচ্চতরে সেট করা থাকে, SQL Server নতুন কার্ডিন্যালিটি এস্টিমেশন ফিচারটি ব্যবহার করে। যদি কম্প্যাটিবিলিটি লেভেল 2012 বা নিম্নতরে সেট করা থাকে, পুরানো অপ্টিমাইজার ব্যবহার করা হয়।

Feedback ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন জিজ্ঞেস করুন।

বিশেষজ্ঞ প্রশাসন, পরিচালনা, এবং কনফিগারেশন দিয়ে আপনার পরিবেশ অপ্টিমাইজ করুন

Rackspace-এর অ্যাপ্লিকেশন সার্ভিসেস (RAS) এক্সপার্টরা অ্যাপ্লিকেশনের একটি ব্যাপক পোর্টফোলিওতে নিচের প্রফেশনাল এবং ম্যানেজড সার্ভিসগুলো প্রদান করে:

  • ই-কমার্স এবং ডিজিটাল এক্সপেরিয়েন্স প্ল্যাটফর্ম
  • এন্টারপ্রাইজ রিসোর্স প্ল্যানিং (ERP)
  • বিজনেস ইন্টেলিজেন্স
  • Salesforce কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (CRM)
  • ডাটাবেস
  • ইমেল হোস্টিং এবং প্রোডাক্টিভিটি

আমরা প্রদান করি:

  • পক্ষপাতরহিত ειδষ্টতা: আমরা আপনার মডার্নাইজেশনের যাত্রা সহজ করি এবং গাইড করি, যেস 능력이 সরাসরি মান প্রদান করে সেগুলোর ওপর ফোকাস করি।
  • Fanatical Experience™: আমরা একটি প্রক্রিয়া-প্রথম, টেকনোলজি-দ্বিতীয়® পদ্ধতিকে ডেডিকেটেড টেকনিক্যাল সাপোর্টের সাথে কম্বাইন করি কমপ্রিহেনসিভ সমাধান প্রদানের জন্য।
  • অনন্য পোর্টফোলিও: আমরা ব্যাপক ক্লাউড অভিজ্ঞতা প্রয়োগ করি আপনাকে সঠিক টেকনোলজি সঠিক ক্লাউডে বেছে নেওয়া এবং ডিপ্লয় করার সাহায্য করার জন্য।
  • এজাইল ডেলিভারি: আমরা আপনার যাত্রায় আপনি যেখানে আছেন সেখানে আপনাকে মিট করি এবং আমাদের সাফল্যকে আপনার সাফল্যের সাথে আলাইন করি।

আরম্ভ করতে এখন চ্যাট করুন।

  1. মৌজুदा SQL Server AlwaysOn ডেটাবেসের জন্য লগ শিপিং: একটি প্র্যাক্টিক্যাল DR গাইড

  2. SQL Server Query Store মাস্টার করুন: কোয়েরি পারফরম্যান্স ক্যাপচার, বিশ্লেষণ ও সমাধান

  3. মাইক্রোসফট SQL সার্ভারে উন্নত ক্ষতিগ্রস্ত ডেটাবেস শনাক্তকরণ ও পুনরুদ্ধার

  4. সহজ মাইগ্রেশন: MS Access ডেটা SQL Server 2014-এ স্থানান্তর করুন