এসকিউএল সার্ভার 2005 এর কোন ডাটাবেসটি কতটা র‌্যাম ব্যবহার করে তা সন্ধান করুন


12

আমার এক বন্ধু আমাকে আজ জিজ্ঞাসা করেছিল (তার একজন উত্তেজিত গ্রাহককে শান্ত করার চেষ্টা করে) আপনি কীভাবে এসকিউএল সার্ভার 2005 এ জানতে পারেন যে কোন ডাটাবেসটি কোনও নির্দিষ্ট সময়ে কতটা মেমরি (সার্ভারের র‌্যামে) ব্যবহার করে।

এটা কি আদৌ সম্ভব? যদি তাই হয়, কিভাবে? আপনি অন্তর্নির্মিত এসকিউএল সার্ভার সরঞ্জামগুলির সাহায্যে এটি করতে পারেন, বা আপনার অতিরিক্ত তৃতীয় পক্ষের বিকল্পের প্রয়োজন?

তাঁর উত্সর্গীকৃত এসকিউএল সার্ভার মেশিনটি হঠাৎ করে এর 4 জিবি র্যামের 200 কেবি ব্যতীত সমস্তগুলি ব্যবহার করে কারণ তার গ্রাহক সমস্ত আলোড়িত হয়েছিল। আমি মনে করি না এটি আসলেই সমস্যা, কিন্তু - যেহেতু এই লোকটি দাবি করেছে যে এটি রাতারাতি কমবেশি ঘটেছে, তাই তিনি জানতে চান কী কারণে স্মৃতি ব্যবহারের এই বৃদ্ধি ঘটে .....

আঙ্গুরের ছিরড়া

উত্তর:


25

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

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

SELECT
   (CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
   (CASE WHEN ([database_id] = 32767) THEN 'Resource Database' ELSE DB_NAME (database_id) END) AS 'Database Name',
   COUNT (*) AS 'Page Count'
FROM sys.dm_os_buffer_descriptors
   GROUP BY [database_id], [is_modified]
   ORDER BY [database_id], [is_modified];
GO

আমি এই ব্লগ পোস্টে আরও কিছুটা ব্যাখ্যা করি স্টোরেজ ইঞ্জিনের ভিতরে: বাফার পুলটিতে কী আছে?

আপনি কেবি 907877 ( এসকিউএল সার্ভার 2005 এ মেমরির ব্যবহার নিরীক্ষণের জন্য ডিবিসিসি মেমোরিস্ট্যাটাস কমান্ডটি কীভাবে ব্যবহার করবেন) যাচাই করতে পারেন যা আপনাকে এসকিউএল সার্ভারের বাকী মেমরির ব্যবহারের ভাঙ্গন (তবে প্রতি ডাটাবেস নয়) ধারণা দেয়।

আশাকরি এটা সাহায্য করবে!


আপনি একজন প্রতিভা, পল!
marc_s

2

আপনার বন্ধু এসকিউএল যে পরিমাণ র‌্যাম নেবে তার পরিমাণও সীমাবদ্ধ করতে পারে কারণ পল উপরে বলেছে, এসকিউএল তার যে পরিমাণ স্মৃতি করতে পারে তা গ্রহণ করবে।

এসকিউএল সার্ভার দ্বারা নেওয়া মেমরির পরিমাণ 2000 এমবি (বা আপনি যা ভাল মনে করেন) সীমাবদ্ধ করুন।

--Enable advanced options:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

--Set the maximum amount of memory to 2000 MB:
USE master
EXEC sp_configure 'max server memory (MB)', 2000
RECONFIGURE WITH OVERRIDE

--Display the newly set configuration:
USE master
EXEC sp_configure 'max server memory (MB)'

--Set 'show advanced options' back to default:
USE master
EXEC sp_configure 'show advanced options', 0 
RECONFIGURE WITH OVERRIDE

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