Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में मेमोरी सेटिंग के महत्व को समझना

मेमोरी प्रदर्शन त्रिकोण बनाने वाले संसाधनों में से एक है- सीपीयू और स्टोरेज अन्य दो हैं। यदि एक मारा जाता है, तो अन्य दो प्रदर्शन को स्वीकार्य स्तर पर लाने का प्रयास करने के लिए भार उठाते हैं, लेकिन हमेशा व्यापार बंद होता है। जो भी लेन-देन स्मृति के लिए प्रतिबद्ध नहीं किया जा सकता है उन्हें SQL सर्वर द्वारा डिस्क सबसिस्टम को अग्रेषित किया जाएगा। यह एक प्रदर्शन अड़चन का कारण बनता है। इसलिए, प्रतीक्षा आँकड़े SQL सर्वर पर प्रदर्शन समस्याओं की पहचान करने में मदद कर सकते हैं।

इस लेख में निम्नलिखित विषयों पर चर्चा की गई है:

  1. SQL सर्वर मेमोरी सेटिंग और कॉन्फ़िगरेशन के आंतरिक भाग को समझना
  2. SQL सर्वर मेमोरी और डेटाबेस और एप्लिकेशन प्रदर्शन पर इसका प्रभाव
  3. विभिन्न SQL सर्वर घटकों पर चर्चा करें जो स्मृति उपयोग में योगदान करते हैं
  4. स्मृति आकार के लिए सर्वोत्तम अभ्यास और अनुशंसा
  5. मल्टी-सर्वर मेमोरी रिपोर्ट
  6. और भी बहुत कुछ...

स्मृति प्रबंधन आंतरिक

SQL सर्वर में एक मेमोरी मैनेजमेंट यूनिट है जो सिस्टम के कार्यभार के आधार पर स्वचालित गतिशील मेमोरी प्रबंधन करता है। यह स्मृति वह अस्थिर स्थान है जो आज के व्यवसाय-तकनीकी जरूरतों के लिए महत्वपूर्ण है, जिसका सही आकार अनुप्रयोगों के इष्टतम प्रदर्शन के लिए महत्वपूर्ण है।

हालाँकि, हम सभी जानते हैं कि सर्वर सेट करते समय, साइज़िंग में कुछ डिफ़ॉल्ट मान होते हैं। कुछ मामलों में, हमें जल्द ही पता चलता है कि SQL सर्वर सर्वर पर लगभग सभी मेमोरी का उपयोग करता है, भले ही डेटाबेस पर कोई दृश्य गतिविधि न हो, प्रश्नों को लाते हुए:क्या डिफ़ॉल्ट मान गलत हैं? यदि हां, तो सही आकार क्या होना चाहिए?

SQL सर्वर पर मेमोरी मैनेजमेंट फिल-एंड-फ्लश एल्गोरिथम पर काम करता है। डिफ़ॉल्ट मान मेमोरी खपत को बढ़ने से नहीं रोकते हैं जब तक कि ऑपरेटिंग सिस्टम से अनुरोध न हो।

आकार प्रणाली के विभिन्न घटकों पर निर्भर करता है—कई मामलों में, इसे 70% और 80% के बीच सेट करना एक अच्छा प्रारंभिक बिंदु है। फिर, आपको यह देखने के लिए भी निगरानी करनी चाहिए कि आप और क्या याद कर रहे हैं और यदि आपको सेटिंग में बदलाव करना चाहिए। यदि आपके पास SQL ​​​​सर्वर पर अन्य सेवाएं हैं (आपको वास्तव में नहीं करना चाहिए), तो आपको अधिक पीछे छोड़ना पड़ सकता है, खासकर यदि ये सेवाएं मेमोरी हॉग हैं। निम्न में से किसी भी परिदृश्य में SQL इंस्टेंस की मेमोरी सेटिंग को फिर से देखने पर विचार करें:

  • ऑपरेटिंग सिस्टम की अनुत्तरदायीता
  • एप्लिकेशन समाप्त होना
  • बैकअप संचालन जिसके लिए बड़े मेमोरी बफ़र्स की आवश्यकता होती है
  • इन-मेमोरी ऑप्टिमाइज़्ड ऑब्जेक्ट
  • कॉलम स्टोर इंडेक्स, क्योंकि उन्हें इंडेक्स मेंटेनेंस करने के लिए बड़ी मात्रा में मेमोरी की आवश्यकता होती है।

SQL सर्वर पर मेमोरी सेटिंग बहुत सीधी है। आप sp_configure . का उपयोग करके मान बदल सकते हैं या एसएसएमएस जीयूआई। यह एक ऑनलाइन विकल्प है लेकिन याद रखें कि इन मानों को सेट करने या रीसेट करने से कुछ आंतरिक कैश ऑब्जेक्ट में फेरबदल हो सकता है, जिससे सिस्टम थोड़ा धीमा चल सकता है।

sp_configure 'अधिकतम सर्वर मेमोरी (एमबी)',<एमबी में मेमोरी>

इस मामले में, संख्या "2147483647" का अर्थ है कि SQL सर्वर की कोई ऊपरी सीमा नहीं है और सर्वर पर सभी मेमोरी का उपयोग करेगा।

न्यूनतम सर्वर मेमोरी:न्यूनतम सर्वर मेमोरी फ्लोर वैल्यू के रूप में; SQL सर्वर अपने स्वयं के उपयोग के लिए मेमोरी को तब तक प्रतिबद्ध करेगा जब तक कि वह न्यूनतम सर्वर मेमोरी सेटिंग तक नहीं पहुंच जाता। उसके बाद, यह कम से कम इस प्रयोग करने योग्य मेमोरी को बनाए रखेगा।

अधिकतम सर्वर मेमोरी:जिस तरह न्यूनतम सर्वर मेमोरी एक मंजिल प्रदान करती है, उसी तरह अधिकतम सर्वर मेमोरी एक सीलिंग प्रदान करती है।

न्यूनतम और अधिकतम स्मृति स्तर बफर पूल द्वारा उपयोग के लिए अनुमत स्मृति की मात्रा की निचली और ऊपरी सीमा है। बफर पूल SQL सर्वर द्वारा खपत की गई मेमोरी का सबसे बड़ा हिस्सा है। SQL इंस्टेंस के भीतर SQL सर्वर घटक निम्नलिखित हैं जो बफर पूल से मेमोरी का उपयोग करते हैं

  • डेटाबेस पेज कैशे
  • आंतरिक लॉग संचय
  • प्रक्रिया कैश या क्वेरी प्लान कैश
  • क्वेरी वर्कलोड स्पेस
  • ताले (स्मृति अनुदान)
  • कनेक्शन प्रसंग
  • क्वेरी अनुकूलित करना
  • सिस्टम-स्तरीय डेटा संरचनाएं

उपलब्ध Mbytes, Pages/Sec, Buffer Cache Hit Ratio, PLE, आदि जैसे महत्वपूर्ण मेट्रिक्स के मान SQL सर्वर के प्रदर्शन को निर्धारित करते हैं।

बफर कैश हिट अनुपात प्रत्येक एप्लिकेशन के लिए विशिष्ट है। 90% आमतौर पर वांछनीय माना जाता है। इसका मतलब है कि 90% से अधिक अनुरोध कैश द्वारा दिए गए थे, जो एक अच्छी बात है। यदि मान कम है, तब तक अधिक मेमोरी जोड़ें जब तक कि यह लगातार 90% से अधिक न हो जाए।

उपलब्ध बाइट्स और कुछ नहीं बल्कि इस बात का संकेत है कि उपयोग के लिए कितनी मेमोरी उपलब्ध है। पेज/सेकंड काउंटर दिखाता है कि हार्ड पेज दोषों के कारण डिस्क से कितने पेज पुनर्प्राप्त किए गए थे, या डिस्क पर लिखे गए थे।

PLE का मतलब पेज लाइफ एक्सपेक्टेंसी है, जो इस बात का संकेत है कि पेज कितने सेकंड के लिए पूल में रहेगा।

उदाहरण के लिए,

$server = 'hqdbt01'

$counters = @("\Memory\Available MBytes",
 "\Memory\Pages/sec",
 "\SQLServer:Buffer Manager\Buffer cache hit ratio",
 "\SQLServer:Buffer Manager\Lazy writes/sec",
 "\SQLServer:Buffer Manager\Page life expectancy" 

 ) 
 $collections = Get-Counter -ComputerName $server -Counter $counters -SampleInterval 10 -MaxSamples 1
 Write-Output $collections 
 foreach ($collection in $collections) 
 {$sampling = $collection.CounterSamples | Select-Object -Property TimeStamp, Path, Cookedvalue 
  $sampling | Format-Table -AutoSize
   }

सुझाव और सर्वोत्तम प्रक्रियाएं

आइए अब हम स्मृति को आकार देने की तकनीकों को संक्षेप में देखें।

  1. ऑपरेटिंग सिस्टम के लिए आरक्षित 1 जीबी मेमोरी
  2. शुरुआती 4 जीबी के बाद हर 4 जीबी रैम के लिए 1 जीबी, 16 जीबी तक रैम
  3. 16 जीबी से अधिक रैम में प्रत्येक 8 जीबी के लिए प्रत्येक 1 जीबी

उदाहरण के लिए, यदि आपके पास 32 जीबी रैम डेटाबेस सर्वर है, तो ऑपरेटिंग सिस्टम को दी जाने वाली मेमोरी होगी

  1. 1 जीबी, न्यूनतम आवंटन
  2. + 3 जीबी, 16 जीबी से - 4 जीबी =12 जीबी; 12 जीबी को 4 जीबी से विभाजित किया जाता है (प्रत्येक 4 जीबी को 1 जीबी मिलता है) 3 जीबी है।
  3. + 2 जीबी, 32 जीबी के रूप में - 16 जीबी =16 जीबी; 16 को 8 से विभाजित किया जाता है (16 जीबी के बाद प्रत्येक 8 जीबी को 1 जीबी मिलता है) 2 जीबी है

तो, कुल मिलाकर, 32 जीबी रैम वाले सर्वर के लिए, 7 जीबी ऑपरेटिंग सिस्टम के लिए आरक्षित होगा। यह SQL सर्वर को आवंटित अधिकतम मेमोरी 25 GB होनी चाहिए। इसी तरह, 64 जीबी सर्वर के लिए, ऑपरेटिंग सिस्टम के लिए 10 जीबी और एसक्यूएल सर्वर के लिए 54 जीबी आवंटित किया जाना चाहिए।

हम सभी ने कभी न कभी विंडोज मैनेजमेंट इंस्ट्रुमेंटेशन (डब्लूएमआई) के बारे में सुना या इस्तेमाल किया है। WMI में कई वर्ग हैं, जो हमें हार्डवेयर, इंस्टॉल किए गए सॉफ़्टवेयर, ऑपरेटिंग सिस्टम या यहां तक ​​कि रजिस्ट्री के बारे में जानकारी निकालने की अनुमति देते हैं। हम सेटिंग्स को संशोधित भी कर सकते हैं और इन पहलुओं पर कार्रवाई कर सकते हैं।

win32_OperatingSystem वर्ग एक WMI वर्ग है जिसमें सक्रिय के बारे में सभी आवश्यक जानकारी है ऑपरेटिंग सिस्टम (यदि आप कहते हैं, दोहरी बूटिंग हैं)। इस वर्ग का उपयोग ऑपरेटिंग सिस्टम को आवंटित मेमोरी की मात्रा प्राप्त करने के लिए भी किया जा सकता है। यहां कुछ वस्तुएं दी गई हैं, जो कक्षा वापस आ सकती हैं, जो हमारे लिए मददगार हो सकती हैं (स्मृति को इस वर्ग द्वारा किलोबाइट में मापा जाता है):

  • TotalVisibleMemorySize :यह फ़ील्ड कुल भौतिक मेमोरी दिखाती है जो ऑपरेटिंग सिस्टम के लिए सुलभ है। स्मृति के दुर्गम भाग के कारण यहां स्थापित संख्या से छोटी संख्या प्रदर्शित हो सकती है।
  • फ्रीफिजिकल मेमोरी :यह हमें बताता है कि कितनी मात्रा में भौतिक स्मृति निःशुल्क है।
  • TotalVirtualMemorySize :यह OS के उपयोग के लिए उपलब्ध कुल वर्चुअल मेमोरी है। इसमें पेजफाइल के आकार के साथ कंप्यूटर पर स्थापित भौतिक मेमोरी शामिल है।
  • फ्री वर्चुअल मेमोरी :FreePhysicalMemory के समान, लेकिन पेजिंग मेमोरी में भी खाली स्थान शामिल है।
$server='hqdbt01'
Get-WmiObject -Class Win32_OperatingSystem  -ComputerName $server | select  CSName,
@{name="TotalVirtualMemorySize";expression={($_.TotalVirtualMemorySize/1024).tostring("N0")}},
@{name="TotalVisibleMemorySize";expression={($_.TotalVisibleMemorySize/1024).tostring("N0")}},
@{name="FreePhysicalMemory";expression={($_.FreePhysicalMemory/1024).tostring("N0")}},
@{name="FreeVirtualMemory";expression={($_.FreeVirtualMemory/1024).tostring("N0")}},
@{name="FreeSpaceInPagingFiles";expression={($_.FreeSpaceInPagingFiles/1024).tostring("N0")}},
NumberofProcesses,
NumberOfUsers 

हम Win32_PageFileSetting WMI वर्ग का उपयोग करके पृष्ठ फ़ाइल जानकारी प्राप्त कर सकते हैं।

$server='hqdbt01'
Get-WMIObject Win32_PageFileSetting -Computer $server|  select @{name="ServerName";expression={$_.__Server}}, Name, InitialSize, MaximumSize 

निम्न क्वेरी SQL इंस्टेंस के उच्च-स्तरीय मेमोरी उपयोग विवरण देती है।

SELECT 
	physical_memory_in_use_kb/1024 Physical_memory_in_use_MB, 
    large_page_allocations_kb/1024 Large_page_allocations_MB, 
    locked_page_allocations_kb/1024 Locked_page_allocations_MB,
    virtual_address_space_reserved_kb/1024 VAS_reserved_MB, 
    virtual_address_space_committed_kb/1024 VAS_committed_MB, 
    virtual_address_space_available_kb/1024 VAS_available_MB,
    page_fault_count Page_fault_count,
    memory_utilization_percentage Memory_utilization_percentage, 
    process_physical_memory_low Process_physical_memory_low, 
    process_virtual_memory_low Process_virtual_memory_low
FROM sys.dm_os_process_memory;

स्क्रिप्ट तैयार करें

आइए उपरोक्त तीन आउटपुट को एक मेमोरी आउटपुट में एकीकृत करें:

  1. काउंटर का उपयोग कर SQL आंतरिक मेमोरी संरचनाएं
  2. WMI ऑब्जेक्ट का उपयोग करके उपलब्ध वर्चुअल और भौतिक मेमोरी
  3. WMI का उपयोग करके पृष्ठ फ़ाइल सेटिंग

HTML सामग्री की तैयारी, सही टैग के बीच, स्क्रिप्ट के विभिन्न अनुभागों से दिए गए मान को भरने के बारे में है।

स्क्रिप्ट मान्य HTML टैग बना सकती है। स्क्रिप्ट में उपयोग किए जाने वाले फ़ंक्शन निम्नलिखित हैं।

  1. writeHTMLHeader:इस फ़ंक्शन का उपयोग हेडर बनाने और HTML फ़ाइल के लिए शैली को परिभाषित करने के लिए किया जाता है।
  2. writetableFooter:यह क्लोजिंग HTML टैग्स को परिभाषित करता है।
  3. writeTableHeader:यह HTML फ़ाइल के लिए तेरह-स्तंभ वाले आउटपुट शीर्षक को परिभाषित करता है
  4. writeMemoryInfo:यह वह फंक्शन है जो दो WMI क्लास आउटपुट को मर्ज करता है। Win32_PageFileSetting, Win32_OperatingSystem और SMO SQL के आउटपुट को इस फ़ंक्शन के लिए तर्क के रूप में पास किया जाता है। इस खंड में मूल्यों को और भी रूपांतरित या हेरफेर किया जा सकता है।
  5. ईमेल अनुभाग

[विस्तार शीर्षक ="कोड"]

# First, let’s create a text file, where we will later save memory details


$MailServer='mail01.example.com'

$MemoryFileName = "f:\PowerSQL\Memory.htm"
New-Item -ItemType file $MemoryFileName -Force
# Function to write the HTML Header to the file
Function writeHtmlHeader
{
param($fileName)
$date = ( get-date ).ToString('yyyy/MM/dd')
Add-Content $fileName "<html>"
Add-Content $fileName "<head>"
Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"
Add-Content $fileName '<title>SQLShack Memory Usage Report </title>'
add-content $fileName '<STYLE TYPE="text/css">'
add-content $fileName  "<!--"
add-content $fileName  "td {"
add-content $fileName  "font-family: Tahoma;"
add-content $fileName  "font-size: 11px;"
add-content $fileName  "border-top: 1px solid #999999;"
add-content $fileName  "border-right: 1px solid #999999;"
add-content $fileName  "border-bottom: 1px solid #999999;"
add-content $fileName  "border-left: 1px solid #999999;"
add-content $fileName  "padding-top: 0px;"
add-content $fileName  "padding-right: 0px;"
add-content $fileName  "padding-bottom: 0px;"
add-content $fileName  "padding-left: 0px;"
add-content $fileName  "}"
add-content $fileName  "body {"
add-content $fileName  "margin-left: 5px;"
add-content $fileName  "margin-top: 5px;"
add-content $fileName  "margin-right: 0px;"
add-content $fileName  "margin-bottom: 10px;"
add-content $fileName  ""
add-content $fileName  "table {"
add-content $fileName  "border: thin solid #000000;"
add-content $fileName  "}"
add-content $fileName  "-->"
add-content $fileName  "</style>"
Add-Content $fileName "</head>"
Add-Content $fileName "<body>"

add-content $fileName  "<table width='100%'>"
add-content $fileName  "<tr bgcolor='#CCCCCC'>"
add-content $fileName  "<td colspan='13' height='25' align='center'>"
add-content $fileName  "<font face='tahoma' color='#003399' size='4'><strong>SQLShack Memory Usage Report - $date</strong></font>"
add-content $fileName  "</td>"
add-content $fileName  "</tr>"
add-content $fileName  "</table>"

}

# Function to write the HTML Header to the file
Function writeTableHeader
{
param($fileName)

Add-Content $fileName "<tr bgcolor=#CCCCCC>"
Add-Content $fileName "<td width='10%' align='center'>ServerName</td>"
Add-Content $fileName "<td width='10%' align='center'>TotalVirtualMemorySize</td>"
Add-Content $fileName "<td width='10%' align='center'>TotalVisibleMemorySize</td>"
Add-Content $fileName "<td width='10%' align='center'>FreePhysicalMemory</td>"
Add-Content $fileName "<td width='10%' align='center'>FreeVirtualMemory</td>"
Add-Content $fileName "<td width='10%' align='center'>FreeSpaceInPagingFiles</td>"
Add-Content $fileName "<td width='10%' align='center'>NumberofProcesses</td>"
Add-Content $fileName "<td width='10%' align='center'>NumberOfUsers</td>"
Add-Content $fileName "<td width='10%' align='center'>PageFile</td>"
Add-Content $fileName "<td width='10%' align='center'>Page-InitialSize</td>"
Add-Content $fileName "<td width='10%' align='center'>Page-MaxSize</td>"
Add-Content $fileName "<td width='10%' align='center'>SQLMaxMemory</td>"
Add-Content $fileName "<td width='10%' align='center'>SQLMinMemory</td>"
Add-Content $fileName "<td width='10%' align='center'>Memory Available MBytes</td>"
Add-Content $fileName "<td width='10%' align='center'>Buffer Cache Hit Ratio</td>"
Add-Content $fileName "<td width='10%' align='center'>PLE</td>"
Add-Content $fileName "</tr>"
}

Function writeHtmlFooter
{
param($fileName)

Add-Content $fileName "</body>"
Add-Content $fileName "</html>"
}

Function writeMemoryInfo
{
param($filename,$csname,$TotalVirtualMemorySize,$TotalVisibleMemorySize,$FreePhysicalMemory,$FreeVirtualMemory,$FreeSpaceInPagingFiles,$NumberofProcesses,$NumberOfUsers,$PageFile,$initialSize,$MaxSize,$SQLMaxMemory, $SQLMinMemory ,$mAvailableMBytes, $Buffercachehitratio, $PLE )
 Add-Content $fileName "<tr>"
 Add-Content $fileName "<td>$csname </td>"
 Add-Content $fileName "<td>$TotalVirtualMemorySize </td>"
 Add-Content $fileName "<td>$TotalVisibleMemorySize</td>"
 Add-Content $fileName "<td>$FreePhysicalMemory </td>"
 Add-Content $fileName "<td>$FreeVirtualMemory </td>"
 Add-Content $fileName "<td>$FreeSpaceInPagingFiles </td>"
 Add-Content $fileName "<td>$NumberofProcesses </td>"
 Add-Content $fileName "<td>$NumberOfUsers</td>"
 Add-Content $fileName "<td>$PageFile</td>"
 Add-Content $fileName "<td>$initialSize</td>"
 Add-Content $fileName "<td>$MaxSize</td>"
 Add-Content $fileName "<td>$SQLMaxMemory</td>"
 Add-Content $fileName "<td>$SQLMinMemory</td>"
 Add-Content $fileName "<td>$mAvailableMBytes</td>"
 Add-Content $fileName "<td>$Buffercachehitratio</td>"
 Add-Content $fileName "<td>$PLE</td>"
 
 Add-Content $fileName "</tr>"
}

Function sendEmail  

 { 
param($from,$to,$subject,$smtphost,$htmlFileName)  

$body = Get-Content $htmlFileName 
$body = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body 
$body.isBodyhtml = $true
$smtpServer = $MailServer
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($body)

    

 }  


writeHtmlHeader $MemoryFileName
 Add-Content $MemoryFileName "<table width='100%'><tbody>"
 Add-Content $MemoryFileName "<tr bgcolor='#CCCCCC'>"
 Add-Content $MemoryFileName "<td width='100%' align='center' colSpan=16><font face='tahoma' color='#003399' size='2'><strong> Memory Usage Details</strong></font></td>"
 Add-Content $MemoryFileName "</tr>"

 writeTableHeader $MemoryFileName

foreach ($svr in get-content "\\hqdbsp18\f$\PowerSQL\Server.txt"){

$page=Get-WMIObject Win32_PageFileSetting -Computer $svr|  select __Server, Name, InitialSize, MaximumSize
$dp = Get-WmiObject -Class Win32_OperatingSystem  -ComputerName $svr | select  CSName,
@{name="TotalVirtualMemorySize";expression={($_.TotalVirtualMemorySize/1024).tostring("N0")}},
@{name="TotalVisibleMemorySize";expression={($_.TotalVisibleMemorySize/1024).tostring("N0")}},
@{name="FreePhysicalMemory";expression={($_.FreePhysicalMemory/1024).tostring("N0")}},
@{name="FreeVirtualMemory";expression={($_.FreeVirtualMemory/1024).tostring("N0")}},
@{name="FreeSpaceInPagingFiles";expression={($_.FreeSpaceInPagingFiles/1024).tostring("N0")}},
NumberofProcesses,
NumberOfUsers

$srv = new-object ('Microsoft.SqlServer.Management.Smo.Server') ($svr)
write-host $srv.Configuration.MaxServerMemory.RunValue 
write-host $srv.Configuration.MinServerMemory.RunValue 


$counters = @("\Memory\Available MBytes",
 "\Memory\Pages/sec",
 "\SQLServer:Buffer Manager\Buffer cache hit ratio",
 "\SQLServer:Buffer Manager\Lazy writes/sec",
 "\SQLServer:Buffer Manager\Page life expectancy"
  ) 
 $collections = Get-Counter -ComputerName $svr -Counter $counters -SampleInterval 5 -MaxSamples 1
 Write-Output $collections 
 foreach ($collection in $collections) 
    {
     $sampling = $collection.CounterSamples | Select-Object -Property TimeStamp, Path, Cookedvalue 
     foreach($sam in $sampling)
        {
            if ($sam.Path -like "*\Memory\Available MBytes*") {
                $mAvailableMBytes=$sam.CookedValue
                }
            elseif ($sam.Path -like "*Buffer Manager\Buffer cache hit ratio*") {
                $Buffercachehitratio=$sam.CookedValue
            }
            elseif ($sam.Path -like "*Page life expectancy*") {
                $PLE=$sam.CookedValue}
        }
    }
write-host $mAvailableMBytes $Buffercachehitratio $PLE


Write-Host  $dp.csname $dp.TotalVirtualMemorySize $dp.TotalVisibleMemorySize $dp.FreePhysicalMemory $dp.FreeVirtualMemory $dp.FreeSpaceInPagingFiles $dp.NumberofProcesses $dp.NumberOfUsers  $page.InitialSize $page.Name $page.MaximumSize $srv.Configuration.MaxServerMemory.RunValue $srv.Configuration.MinServerMemory.RunValue  $mAvailableMBytes $Buffercachehitratio $PLE
writeMemoryInfo $MemoryFileName $dp.csname $dp.TotalVirtualMemorySize $dp.TotalVisibleMemorySize $dp.FreePhysicalMemory $dp.FreeVirtualMemory $dp.FreeSpaceInPagingFiles $dp.NumberofProcesses $dp.NumberOfUsers  $page.Name $page.InitialSize $page.MaximumSize $srv.Configuration.MaxServerMemory.RunValue $srv.Configuration.MinServerMemory.RunValue $mAvailableMBytes $Buffercachehitratio $PLE

 }


  Add-Content $MemoryFileName "</table>" 

writeHtmlFooter $MemoryFileName 
$date = ( get-date ).ToString('yyyy/MM/dd')
sendEmail [email protected] [email protected] "Memory Usage Report - $Date" $MailServer $MemoryFileName
 

[/विस्तार]

आउटपुट

रैपिंग अप

अब जब आपने SQL सर्वर मेमोरी प्रबंधन के बारे में कुछ नई चीजें सीख ली हैं, तो आप SQL सर्वर संसाधनों को बेहतर ढंग से समझ पाएंगे।

यदि सर्वर पर पर्याप्त रैम है, तो डेटा पेजों का बफर पूल में लंबा जीवन हो सकता है जिसके परिणामस्वरूप I/O जरूरतों में भारी कमी आती है।

जबकि ज्यादातर मामलों में डेटाबेस प्रशासक डिफ़ॉल्ट मेमोरी सेटिंग्स पर भरोसा करते हैं, हमें यह समझने की जरूरत है कि मेमोरी आवश्यकताओं के आंतरिक इंस्टेंस के कार्यभार पर निर्भर करते हैं।

यह आलेख SQL सर्वर स्मृति और उसके आंतरिक का एक उच्च-स्तरीय पूर्वाभ्यास है। साथ ही, यह अधिकतम मेमोरी सेट न करने के कारण प्रदर्शन बाधाओं के पीछे के विभिन्न कारणों को शामिल करता है।

मैंने स्मृति रिपोर्ट को सेट करने और कॉन्फ़िगर करने के लिए चरण-दर-चरण निर्देश शामिल किए हैं। SQL मेमोरी को सेट करने के चरण भी शामिल हैं। इसके अलावा, हमने विभिन्न SQL घटकों पर चर्चा की जो SQL सर्वर वातावरण पर उपलब्ध मेमोरी के उपयोग में योगदान करते हैं।

याद रखने वाली एक बात यह है कि मेमोरी का आवंटन और डी-आवंटन स्टार्टअप को धीमा कर देता है। इसलिए, यदि आपके पास एक ही सर्वर पर कई अनुप्रयोग रुक रहे हैं और प्रारंभ हो रहे हैं, तो यह प्रदर्शन को प्रभावित कर सकता है। इसी तरह, यदि एक ही सर्वर पर कई अन्य एप्लिकेशन चल रहे हैं, तो इष्टतम प्रदर्शन सुनिश्चित करने के लिए न्यूनतम सर्वर मेमोरी और अधिकतम सर्वर मेमोरी सेट करना अधिक महत्वपूर्ण हो जाता है।

अभी के लिए बस इतना ही…

संदर्भ

  1. मेमोरी उपयोग की निगरानी
  2. एसक्यूएल सर्वर में मैक्स सर्वर मेमोरी सेट करने का महत्व और इसे कैसे सेट करें
  3. सर्वर मेमोरी सर्वर कॉन्फ़िगरेशन विकल्प

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2017 में एक संग्रहीत कार्यविधि बनाएँ

  2. #temptable और ##TempTable में अंतर?

  3. SQL सर्वर में डेटटाइम 2 बनाम डेटटाइम

  4. SQL सर्वर एकाधिक पंक्ति प्रविष्टियों पर काम करने के लिए एक ट्रिगर

  5. SQL सर्वर में किसी भी / कुछ लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 127