क्या सूचकांक स्मृति का उपभोग करते हैं?


10

मैं SQL सर्वर पर मेमोरी उपयोग के बारे में सीखना शुरू कर रहा हूं। प्रश्न के उत्तर में क्वेरी का उपयोग करते समय SQL Server 2008 R2 "घोस्ट मेमोरी"? , मुझे पता चला कि एक एकल डेटाबेस बफर पूल में शेर की जगह का हिस्सा ले रहा है। आगे, उपयोग करना sys.allocation_unitsऔर sys.indexes, मैंने पुष्टि की कि यह डेटाबेस में अनुक्रमित के भारी उपयोग के कारण होने की संभावना है। अधिकांश सूचकांक गुच्छेदार होते हैं।

एक अन्य डेटाबेस डेवलपर का मानना ​​है कि हम सर्वर पर मेमोरी इश्यू कर रहे हैं - यह कि क्वेरी लंबी चलना शुरू हो जाती है क्योंकि कोई उपलब्ध मेमोरी नहीं है।

मेरा प्रश्न यहाँ है - क्या इन इंडेक्स का उपयोग, और बफर पूल में उनका अस्तित्व, अन्य प्रक्रियाओं के लिए उपलब्ध स्मृति को दूर ले जाता है?


2
"Another database developer believes we are having memory issues on the server"-- किस पर आधारित? सर्वर में कितनी रैम है, उदाहरण मेमोरी सेटिंग्स क्या हैं, और प्रक्रिया कैश द्वारा कितनी मेमोरी खपत की जा रही है?
जॉन सिगेल

विस्तारित क्वेरी बार और टास्क मैनेजर को देखने के आधार पर - जिसे मेरे शोध ने संकेत दिया है कि यह "गंदा, गंदी झूठा" है (धन्यवाद ब्रेंट ओजर - brentozar.com/archive/2011/09/… )। मुझे पता चल सकता है कि कोई स्मृति मुद्दा नहीं है - मैं इन टिप्पणियों और उत्तरों में दिए गए सभी सुझावों का पालन कर रहा हूं!
JHFB

2
जब से हम यहाँ 8 बॉल घुमा रहे हैं, मुझे लगता है कि प्रश्न धीमी गति से चलते हैं क्योंकि वे उस 'अन्य' डेटाबेस डेवलपर द्वारा लिखे गए थे ...
रेमस रुसानु

जवाबों:


12

हां, बफर पूल में कैश किए गए इंडेक्स के डेटा पेज डेटा कैश में जगह ले लेंगे । लेकिन ऐसा न करें कि आप अनुक्रमित का उपयोग करने से दूर हो जाएं (पहले बंद, एक संकुल सूचकांक वास्तविक तालिका डेटा है इसलिए इसे अच्छी तरह से ध्यान में रखें)। अनुक्रमित (ठीक से डिजाइन और कार्यान्वित, निश्चित रूप से) का उपयोग एक अच्छी बात है।

आपकी स्मृति समस्याएं आपके टेबलों पर अनुक्रमित होने से नहीं होने की संभावना है । स्मृति मुद्दों में गोता लगाएँ, वास्तव में क्या समस्याएं हैं? क्या आप कम पृष्ठ जीवन प्रत्याशा कर रहे हैं ? सर्वर पर आपकी मेमोरी कैसे कॉन्फ़िगर की गई है? बफर पूल के आकार को कम करने के लिए अधिकतम सर्वर मेमोरी है?

अपने डेटा कैश में इंडेक्स पेजों का टूटना पाने के लिए, आप नीचे दिए गए क्वेरी को चला सकते हैं:

select
    count(*) as total_page_count,
    count(*) * 8 as total_consumption_kb,
    sum(row_count) as total_row_count
from sys.dm_os_buffer_descriptors
where page_type = 'INDEX_PAGE'
group by page_type

डेटाबेस द्वारा ये आँकड़े प्राप्त करने के लिए:

select
    db_name(database_id) as database_name,
    count(*) as total_page_count,
    count(*) * 8 as total_consumption_kb,
    sum(row_count) as total_row_count
from sys.dm_os_buffer_descriptors
where page_type = 'INDEX_PAGE'
group by database_id
order by total_consumption_kb desc

निर्णय (?) पृष्ठ जीवन प्रत्याशा - 4234. मुझे बफर कैश हिट अनुपात पर शोध करने और अन्य भागों में देखने की आवश्यकता है।
JHFB

वह PLE मेमोरी प्रेशर बिल्कुल नहीं दिखा रहा है। अंगूठे के एक नियम के रूप में 1000 से अधिक कुछ भी (ज़ाहिर है, हमेशा "यह निर्भर करता है") स्वीकार्य है।
थॉमस स्ट्रिंगर

बफर कैशे हिट अनुपात बहुत भ्रामक, या बाहर और बेकार हो सकता है। ग्रेट SQL सर्वर डिबेट्स देखें : @JonathanKehayias द्वारा बफ़र कैश हिट अनुपात
मार्क स्टोरी-स्मिथ

@ MarkStorey- स्मिथ नोटिफ़ाइड, पॉइंटर के लिए धन्यवाद!
थॉमस स्ट्रिंगर

@ जेएचएफबी चलो एक कदम पीछे हटते हैं। आपको क्या लगता है कि आपको स्मृति दबाव हो रहा है?
थॉमस स्ट्रिंगर

7

इंडेक्स बफर पूल स्पेस का उपभोग करते हैं, हाँ। यह एक और कारण है कि आपको अपनी अनुक्रमण रणनीति के साथ ध्यान रखना चाहिए और डुप्लिकेट को कम करना चाहिए।

मैंने पुष्टि की कि यह डेटाबेस में अनुक्रमित के भारी उपयोग के कारण होने की संभावना है। अधिकांश सूचकांक गुच्छेदार होते हैं।

याद रखें कि एक संकुल सूचकांक तालिका है । केवल उपरिव्यय जो एक ढेर सूचकांक के लिए मौजूद है और उसके ऊपर एक ढेर के लिए (जो आमतौर पर अवांछनीय है) गैर-पत्ती सूचकांक पृष्ठों और उस तालिका के लिए सभी गैर-संकुल सूचकांक में क्लस्टर कुंजी के समावेश के लिए है। यही कारण है कि संकीर्ण क्लस्टर कुंजी पसंद की जाती है।

गुच्छेदार प्रमुख विकल्पों पर किम्बर्ले ट्रिप के लेख इसके लिए एक उत्कृष्ट संदर्भ हैं।


+1 कि सुश्री ट्रिप्प के लेख क्लस्टरिंग कीज़ पर EPIC हैं ...
फैब्रिकियो अराज़ो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.