2009-12-25 8 views
6

मैं अपनी साइट और डेटाबेस को अनुकूलित करने पर काम कर रहा हूं, और मैं इसके साथ मदद करने के लिए mysqltuner.pl का उपयोग कर रहा हूं। टेबल कैश हिट रेट को छोड़कर, मुझे बस सब कुछ ठीक हो गया है, इससे कोई फर्क नहीं पड़ता कि मैं इसे अपने.cnf में कितना ऊंचा करता हूं, मैं अभी भी लगभग 0% (284 खुला/79k खोला गया) मार रहा हूं।कम MySQL तालिका कैश हिट दर

मेरी समस्या यह है कि मुझे वास्तव में यह समझ में नहीं आता कि वास्तव में यह क्या प्रभावित करता है, इसलिए मुझे वास्तव में यह नहीं पता कि यह ठीक करने के लिए मेरे प्रश्न/डेटाबेस संरचना में क्या देखना है।

उत्तर

2

एक कैश गर्म डेटा की प्रतियों को बनाए रखने के लिए माना जाता है। गर्म डेटा वह डेटा होता है जिसका उपयोग बहुत अधिक होता है। यदि आप किसी निश्चित कैश से डेटा पुनर्प्राप्त नहीं कर सकते हैं तो इसका अर्थ यह है कि डीबी को इसे पुनर्प्राप्त करने के लिए डिस्क पर जाना होगा।

--edit--

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

--edit: कुछ जांच -

ठीक है, it seems (इस पोस्ट के जवाब से), कि Mysql एक मेज का प्रतिनिधित्व करते थे डाटा संरचनाओं के लिए तालिका कैश का उपयोग करता। डेटा संरचनाएं भी (encapsulation के माध्यम से या प्रत्येक तालिका के लिए डुप्लिकेट तालिका प्रविष्टियों के द्वारा) फ़ाइल सिस्टम पर डेटा फ़ाइलों के लिए फ़ाइल डिस्क्रिप्टर के एक सेट का प्रतिनिधित्व करते हैं। MyIsam इंजन एक तालिका के लिए एक का उपयोग करता है और प्रत्येक सूचकांक के लिए एक, इसके अतिरिक्त प्रत्येक सक्रिय क्वेरी तत्व को अपने स्वयं के वर्णनकर्ताओं की आवश्यकता होती है।

एक फ़ाइल वर्णनकर्ता कर्नेल के लिए फ़ाइल आईओ इस्तेमाल किया इकाई है, यह एक विशेष पढ़ने या लिखने फ़ाइल के निम्न स्तर के संदर्भ प्रतिनिधित्व करता है।

मुझे लगता है कि आप या तो मूल्य को गलत तरीके से व्याख्या कर रहे हैं या उन्हें इस संदर्भ में अलग-अलग व्याख्या करने की आवश्यकता है। 284 स्नैपशॉट लेने के उदाहरण पर सक्रिय तालिकाओं की मात्रा है और दूसरा मान माइस्क्ल शुरू करने के बाद तालिका को अधिग्रहित करने की मात्रा का प्रतिनिधित्व करता है।

मुझे लगता है कि आपको इस पठन के कई स्नैपशॉट लेने की आवश्यकता है और देखें कि पहला मान (उस उदाहरण पर सक्रिय एफडी) आपके कैश आकार क्षमता से अधिक है या नहीं।

पेज, कर्नेल आमतौर पर फाइल डिस्क्रिप्टर की मात्रा पर ऊपरी सीमा है, यह प्रत्येक प्रक्रिया को खोलने की अनुमति देगा - इसलिए यदि यह बहुत कम है तो आपको इसे ट्यून करने की आवश्यकता हो सकती है।

+0

ठीक है लेकिन मैं इसे सुधारने के लिए क्या देख रहा हूं? क्वेरी कैश हिट दर लगभग 50% है, इसलिए टेबल कैश हिट दर का अस्तित्व क्या नहीं है? –

+0

मुझे उम्मीद है कि उत्तर संतुष्ट होगा: डी –

7

table cache MySQL खोलने वाले एक साथ फ़ाइल डिस्क्रिप्टर की संख्या को परिभाषित करता है। इसलिए तालिका कैश हिट दर से प्रभावित होगा कि आप अपनी सीमा के सापेक्ष कितनी तालिकाओं के साथ-साथ आप कितनी बार टेबल को फिर से संदर्भित करते हैं (ध्यान में रखते हुए कि यह केवल एक कनेक्शन नहीं है, लेकिन एक साथ कनेक्शन)

उदाहरण के लिए, यदि आपकी सीमा 100 है और आपके पास 101 टेबल हैं और आप प्रत्येक को क्रमशः क्वेरी करते हैं, तो आपको कभी भी कोई टेबल कैश हिट नहीं मिलेगी। दूसरी तरफ, यदि आपके पास केवल 1 टेबल है, तो आपको आमतौर पर 100% हिट दर प्राप्त करनी चाहिए जबतक कि आप फ्लश टैब को बहुत अधिक नहीं चलाते (जब तक कि आपकी table_cache आमतौर पर एक साथ कनेक्शन की संख्या से अधिक सेट हो)।

तो ट्यूनिंग के लिए, आप कितने अलग टेबल आप एक प्रक्रिया/ग्राहक द्वारा संदर्भ हो सकता है को देखने के लिए और फिर आप कितने एक साथ कनेक्शन है आम तौर पर हो सकता है पर देखने की जरूरत है।

अधिक जानकारी के बिना, मुझे लगता है कि नहीं कर सकता है कि क्या अपने मामले बहुत अधिक समकालीन कनेक्शन या बहुत अधिक अक्सर संदर्भित तालिकाओं के कारण है।

+0

ठीक है, इसलिए, मेरे पास 6 सर्वर के साथ, मेरे सर्वर पर अधिकतम 1000 कनेक्शन हैं। क्या इसका मतलब है कि मुझे अपने टेबल कैश conf में 6000 की आवश्यकता है? –

+1

बस स्पष्ट होने के लिए, सर्वर पर तालिकाओं की संख्या नहीं है लेकिन क्वेरी में तालिकाओं की संख्या (जॉइन/सबक्वायरीज़/आदि के कारण)। तो यदि आपके पास एक क्वेरी है जो 6 टेबल का उपयोग करती है और आप कम से कम कभी-कभी 1000 साथ-साथ कनेक्शन हिट करते हैं तो 6000 अनुचित नहीं है। हालांकि, यदि 1000 आपका अधिकतम है लेकिन आप शायद ही कभी 500 से ऊपर जाते हैं और सबसे बड़ी क्वेरी केवल 6 तालिकाओं में से 3 को छूती है, तो 1500 पर्याप्त होना चाहिए। –

संबंधित मुद्दे