এসকিউএল সার্ভার থেকে মেমরি দাবি করা


10

আমার কাছে একটি এসকিউএল সার্ভার উদাহরণ রয়েছে যার মেমরির ব্যবহার ধীরে ধীরে বৃদ্ধি পায় যতক্ষণ না উইন্ডোজ এটিকে আর দেয় না। এটি যৌক্তিক বলে মনে হয় যে মাঝে মাঝে বড় প্রশ্নগুলির ফলাফলের ফলে উদাহরণটি বাড়তে পারে।

আমি কি এসকিউএল সার্ভারকে মেমরিটি প্রকাশের জন্য বোঝাতে পারি যে এটির আর প্রয়োজন নেই (পরিষেবাটি আরম্ভ করা ব্যতীত)?

সম্পাদনা করুন:
আমি এসকিউএল সার্ভার 2000 এসকিউএল সার্ভার 8.00.2039 - এসপি 4 (স্ট্যান্ডার্ড সংস্করণ) ব্যবহার করছি

নিম্নলিখিত কোয়েরিটি ব্যবহার করে আমি এটি সন্ধান করতে সক্ষম হয়েছি:

SELECT 'SQL Server ' 
    + CAST(SERVERPROPERTY('productversion') AS VARCHAR) + ' - ' 
    + CAST(SERVERPROPERTY('productlevel') AS VARCHAR) + ' (' 
    + CAST(SERVERPROPERTY('edition') AS VARCHAR) + ')'

উত্তর:


19

এসকিউএল সার্ভারের ঠিক এভাবে কাজ করার কথা

যদি সেই মেশিনে আপনার অন্যান্য পরিষেবাদি থাকে এবং এসকিউএল সমস্ত উপলব্ধ মেমরি গ্রাস করতে না চান তবে আপনাকে সর্বাধিক সার্ভার মেমরি সেট করতে হবে। এমএসডিএন-তে এসকিউএল সার্ভার মেমরি বিকল্পগুলি দেখুন ।


1
কোনও বৈশিষ্ট্যের চেয়ে বাগের মতো আরও শোনাচ্ছে ... এটি আমার কাছে ঘটছে। এসকিউএল সার্ভারটি কিছু করার জন্য উপলব্ধ র‌্যামের 95% সময় নেয় এবং এটি সম্পূর্ণ হয়ে গেলে এটি প্রকাশ করতে ব্যর্থ হয়।
আলকেমিক্যাল

1
@ সম্পূর্ণরূপে আপনি কী বোঝাতে চেয়েছেন তা আলকেমিক্যাল নির্ভর করে । SQL সার্ভার পারেন একটি কম্পিউটার সমস্ত RAM ব্যবহার করতে; এটি একটি ডিস্ক ক্যাশে হিসাবে ব্যবহার করে। আপনি এসকিউএল সার্ভার ব্যবহার না করা অবধি এটি ডিস্ক ক্যাশে হিসাবে এটি ব্যবহার করে " সম্পূর্ণ " হয় না ।
ইয়ান বয়ড

8

অন্যান্য পোস্টারগুলি সঠিক যে এটি ডিজাইনের দ্বারা হয়েছে, তবে আপনি অবশ্যই আপনার সার্ভারের র‌্যামের চেয়ে সর্বাধিক মেমরিটিকে কিছুটা কম সীমাবদ্ধ করতে চান। ইভেন্টগুলির এই ক্রমটি সম্পর্কে চিন্তা করুন:

  • এসকিউএল 2000 আপনার সার্ভারের সমস্ত র্যাম গ্রাস করে সুখে চলে
  • কারও মধ্যে আরডিপি রয়েছে, বা আপনাকে কোনও প্যাচ ডাউনলোড করতে IE টানতে হবে, বা আপনার ব্যাকআপগুলি যা কিছু হোক না কেন kick
  • এসকিউএলকে ওএসের কাজ করার জন্য ক্ষয় করতে হবে এবং পর্যাপ্ত পরিমাণ মেমরি মুক্ত করতে হবে
  • স্মৃতি মুক্ত করার সময় এবং ডিস্কে পেজিং করার সময় পারফরম্যান্স সফল হয়
  • স্থিতিশীল হওয়ার পরে জিনিসগুলি যথেষ্ট পরিমাণে যায়
  • অন্যান্য ক্রিয়াকলাপটি সম্পূর্ণ হয় এবং এসকিউএল ধীরে ধীরে মুক্ত হওয়া র্যামটি পুনরায় দাবি করে
  • পুনরাবৃত্তি

এটি এড়াতে, আপনার আসল শারীরিক মেমরির প্রায় 80-90% এর কাছে আপনার সর্বোচ্চ সার্ভারের মেমরি সীমাটি কনফিগার করুন। এসকিউএল 2000 এর জন্য নির্দেশাবলী: http://msdn.microsoft.com/en-us/library/ms178067.aspx


মনে রাখবেন এই আচরণটি 2005 এবং 2008 - 2000 ওএস-এর চাহিদা অনুসারে মেমরি প্রকাশ করে না।
পল র্যান্ডাল

2
ঠিক চাহিদা অনুসারে নয়, তবে এটি ওএসে মেমরি ফিরিয়ে দেয়। আমি যে লিঙ্কটি পোস্ট করেছি তা থেকে: "এসকিউএল সার্ভার যখন গতিশীলভাবে মেমরি ব্যবহার করে, তখন এটি নিখরচায় শারীরিক মেমরির পরিমাণ নির্ধারণের জন্য সিস্টেমকে পর্যায়ক্রমে জিজ্ঞাসা করে Microsoft এবং 10 এমবি সার্ভার ক্রিয়াকলাপের উপর নির্ভর করে this এই নিখরচায় মেমরিটি বজায় রাখা উইন্ডোজ 2000 কে পেজিং থেকে বাধা দেয় there যদি কম মেমরি মুক্ত থাকে তবে এসকিউএল সার্ভার মেমরিটি উইন্ডোজ 2000 এ প্রকাশ করে more
sh-beta

আহ - সত্য - এটি কিছুটা শারীরিক স্মৃতি ক্ষয় করার কৌশল করে - আপনি ঠিক বলেছেন!
পল রান্ডাল

4

এটি কেবল তখনই মুক্তি পাবে যখন ওএস সিগন্যাল দেয় যে এটি র্যাম অনাহারে রয়েছে, বা আপনি যদি পরিষেবাটি বন্ধ করে পুনরায় চালু করেন; করণীয় হ'ল 'সর্বোচ্চ সার্ভার মেমরি' মানটি কনফিগার করে এসকিউএল সর্বাধিক পরিমাণ ব্যবহার করবে limit যদি সার্ভারে র্যামের দরকার হয় এমন আর কিছু না থাকে (এবং আশা করি সেখানে নেই) তবে আমি এটি নিয়ে চিন্তা করব না।


4

সুতরাং, উত্তরগুলি সংক্ষেপে বলা:

এমএস এসকিউএল সার্ভারকে মেমরিটি প্রকাশের জন্য অনুরোধ করার কোনও উপায় নেই যা এটি অবিলম্বে প্রয়োজন হয় না। এসকিউএল সার্ভারের প্রয়োজন হলে মেমরিটি স্বয়ংক্রিয়ভাবে প্রকাশ করা উচিত তবে এর আগে নয়। এবং যদি আপনার মেমরির সমস্যা হয় তবে আপনার "সর্বোচ্চ সার্ভার মেমরি" মেমরি অপ্টিনের মান হ্রাস করা উচিত।


3

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


2

মনে রাখবেন যে আচরণটি আপনি সমস্তই বর্ণনা করছেন এটি এসকিউএল সার্ভার ২০০৫ এর পরে, যখন মেমরি পরিচালককে ওএস থেকে মেমরি চাপের অনুরোধগুলিতে প্রতিক্রিয়া জানানো হয় (অন্য বিষয়গুলির মধ্যে) লিখেছিলেন।

এসকিউএল সার্ভার 2000 এবং এর আগে, এটি একবারে স্মৃতি ধরলে এটি আর ফিরে পাবে না, OS এটির জন্য যতই চিৎকার করে।

কোডস্লেভ - আপনি কি 2000, 2005 বা 2008 এ চলছে?


আহ হা ... হ্যাঁ সত্যই এসকিউএল 2000.
বিআইবিডি

3
ওএস এটির জন্য চিৎকার করলে এটি এটি ফেরত দেয় না, তবে যদি এটি দেখতে পায় যে ওএস নিখরচায় শারীরিক মেমরির জন্য একটি নির্দিষ্ট প্রান্তিকের নীচে রয়েছে। এমএসডিএন.মাইক্রোসফটকম /en-us/library/ms178067.aspx
sh-beta

এবং sh-beta যা বলেছিল তা জোরদার করার জন্য, এসকিউএল সার্ভার 2000 কেবল তখনই মেমরি প্রকাশ করে যখন এটি লক্ষ্য করে যে ওএসের শারীরিক মেমরি কম রয়েছে কারণ উইন্ডোজ এক্সপি (2001) না হওয়া পর্যন্ত উইন্ডোজ একটি এপিআই যুক্ত করেছিল " ওএসের জন্য চিৎকার করার অনুমতি দেয়" এটি "( এমএসডিএন.মাইক্রোসফটকম /en-us/library/aa366799(v=vs.85).aspx )। এসকিউএল সার্ভার 2005 উইন্ডোজের সেই নতুন বৈশিষ্ট্যের সুযোগ নিয়েছে। যখন এসকিউএল সার্ভার 2000 লেখা হয়েছিল তখন ওএসের পক্ষে চিৎকার করার কোনও উপায় ছিল না, এসকিউএল সার্ভারকে পর্যায়ক্রমে মেমরির চাপ পরীক্ষা করতে বাধ্য করে।
ইয়ান বয়ড

0

পুরানো প্রশ্ন, আমি জানি, তবে মেমরি ছেড়ে দেওয়ার জন্য এসকিউএলকে বাধ্য করার একটি উপায় হ'ল 15 সেকেন্ডের জন্য অপেক্ষা করে (যেমন) ঘুম (15000)) অপেক্ষা করে একটি অ্যাপ্লিকেশন লিখতে হবে যতটা মেমরি বরাদ্দ রাখতে পারে এবং বরাদ্দ মেমরি মুক্ত এবং প্রস্থান; আমি এটি চেষ্টা করেছি এবং এসকিউএল মেমরিটি মুক্তি দেয় যাতে সিস্টেমটি তার র‍্যাম ফিরে পায়; উপরের মত লিখিত কোডটি সি / সি ++ ব্যবহার করে প্রায় তুচ্ছ, মেমরি ব্লক চেইন (পয়েন্টার এবং আকার) ধরে রাখতে স্ট্রাক্টের একটি চেইন স্থাপনের বিষয়টি, ক্রমবর্ধমানভাবে যখন "ম্যালোক ()" ব্যর্থ হয় তখন আকারটি কমিয়ে দেয় একটি ন্যূনতম (1024 এর চেয়ে কম বলুন) এবং তারপরে বরাদ্দকৃত ব্লকগুলি মুক্ত করতে লিঙ্কযুক্ত তালিকায় প্রবেশ করুন

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