MySQL

2009-03-23 24 views
5

के लिए मेमरी स्टोरेज इंजन के विकल्प मैं वर्तमान में एक माईसाम तालिका के खिलाफ कुछ गहन चयन प्रश्न चला रहा हूं। तालिका लगभग 100 एमआईबी (800,000 पंक्तियां) है और यह कभी नहीं बदलती है।MySQL

मुझे अपनी स्क्रिप्ट के प्रदर्शन को बढ़ाने की ज़रूरत है, इसलिए मैं टेबल को माईसाम से मेमरी स्टोरेज इंजन में ले जाने पर सोच रहा था, इसलिए मैं इसे पूरी तरह से स्मृति में लोड कर सकता था।

स्मृति भंडारण इंजन के अलावा, स्मृति में 100 MiB तालिका लोड करने के मेरे विकल्प क्या हैं?

+0

कृपया अपनी तालिका पर 'दिखाएं तालिका बनाएं' चलाएं और परिणाम पोस्ट करें ताकि हम तालिका संरचना और सूचकांक देख सकें । कुछ नमूना चयन प्रश्न भी महान होना चाहिए। –

+0

http://dba.stackexchange.com/questions/1811/what-are-reasons-not-to-use-the-memory-storage-engine-in-mysql – zloctb

उत्तर

4

800k पंक्तियों वाली एक तालिका mysql में कोई समस्या नहीं होनी चाहिए, इससे कोई फर्क नहीं पड़ता कि आप किस स्टोरेज इंजन का उपयोग कर रहे हैं। 100 एमबी के आकार के साथ पूर्ण तालिका (डेटा और चाबियाँ) स्मृति में रहनी चाहिए (mysql कुंजी कैश, ओएस फ़ाइल कैश, या दोनों में उपयुक्त)।

सबसे पहले आप सूचकांकों की जाँच करें। ज्यादातर मामलों में, सूचकांक को अनुकूलित करने से आपको सबसे अच्छा प्रदर्शन बढ़ावा मिलता है। कभी भी कुछ और न करें, जब तक कि आप सुनिश्चित न हों कि वे आकार में हैं। EXPLAIN का उपयोग कर प्रश्नों को आमंत्रित करें और उन मामलों के लिए देखें जहां गलत या गलत अनुक्रमणिका का उपयोग नहीं किया जाता है।यह वास्तविक डेटा डेटा के साथ किया जाना चाहिए, न कि परीक्षण डेटा वाले सर्वर पर।

आपके सूचकांक को अनुकूलित करने के बाद प्रश्नों को एक सेकंड के एक अंश से समाप्त करना चाहिए। यदि प्रश्न अभी भी बहुत धीमे हैं तो बस अपने आवेदन में कैश का उपयोग करके उन्हें चलाने से बचने का प्रयास करें (memcached, आदि)। यह देखते हुए कि तालिका में डेटा कभी भी नहीं बदलता है, पुराने कैश डेटा आदि के साथ कोई समस्या नहीं होनी चाहिए।

0

डेटा को शायद ही कभी बदलते हुए मानते हैं, आप संभावित रूप से MySql query caching का उपयोग करके प्रश्नों के प्रदर्शन को बढ़ावा दे सकते हैं।

+1

मैं memcache और कुछ अन्य कैश समाधानों को देख रहा था, लेकिन कैशिंग प्रश्नों के साथ मुद्दा यह है कि वे शायद ही कभी एक ही प्रश्न हैं। अधिकांश समय एक अलग सवाल है कि इसे सिर्फ एक बार बुलाया जा रहा है। –

0

यदि आपकी तालिका बहुत अधिक पूछताछ की गई है तो यह शायद आपके सर्वर में कितनी मेमोरी है, इस पर निर्भर करता है कि यह ऑपरेटिंग सिस्टम स्तर पर पहले से ही कैश किया गया है।

माईसाम MyISAM Key Cache नामक एक तंत्र का उपयोग करके मेइसैम टेबल इंडेक्स को स्मृति में प्रीलोड करने की अनुमति देता है। एक कुंजी कैश बनाने के बाद आप CACHE INDEX या LOAD INDEX सिंटैक्स का उपयोग करके कैश में एक इंडेक्स लोड कर सकते हैं।

मुझे लगता है कि आपने अपनी तालिका और प्रश्नों का विश्लेषण किया है और वास्तविक प्रश्नों के बाद आपके सूचकांक अनुकूलित किए हैं? अन्यथा यह वास्तव में कुछ है जो आपको पूरी तालिका को स्मृति में संग्रहीत करने का प्रयास करने से पहले करना चाहिए।

+0

मैंने पहले ही टेबल और मेरे प्रश्नों को अनुकूलित किया है। आईडी नाम उपनाम उम्र सेक्स सड़क संख्या शहर राज्य ... और मेरे प्रश्नों का सबसे इस तरह दिखेगा: मेरे तालिका संरचना इस के समान कुछ है तालिका जहां स्तंभ नाम = 'खोज' पैरामीटर से का चयन करें –

0

यदि आपके पास माइस्क्ल के उपयोग के लिए आवंटित पर्याप्त स्मृति है - इनोडब बफर पूल में, या माईसैम द्वारा उपयोग के लिए, आप डेटाबेस को स्मृति में पढ़ सकते हैं (केवल 'टैबलेटनाम से चुनें') और यदि निकालने का कोई कारण नहीं है यह, यह वहां रहता है।

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

हमेशा की तरह, सबसे अच्छी बात यह बेंचमार्क यह करने के लिए।

एक और विचार अगर आप v5.1 का उपयोग कर रहे हैं, एक संग्रह तालिका प्रकार है, जो संकुचित किया जा सकता है उपयोग करने के लिए, और भी सामग्री के लिए उपयोग में तेजी लाने सकता है, अगर वे आसानी से संपीड़न योग्य हैं, है। यह आईओ/मेमोरी एक्सेस के लिए सीपीयू समय को डी-संपीड़ित करने के लिए स्वैप करता है।

0

डेटा बदलता है तो आप आसानी से कई डेटाबेस सर्वर से अधिक तालिका नकल कर सकता है कभी नहीं है।

इस तरह से आप किसी सर्वर से कुछ प्रश्नों को ऑफ़लोड कर सकते हैं, मुख्य सर्वर के लिए कुछ अतिरिक्त श्वास कक्ष प्राप्त कर सकते हैं।

गति सुधार वर्तमान डेटाबेस लोड पर निर्भर करता है, यदि आपका डेटाबेस लोड बहुत कम है तो कोई सुधार नहीं होगा।

पुनश्च:
आप जानते हैं कि स्मृति टेबल उनकी सामग्री जब डेटाबेस पुनरारंभ भूल कर रहे हैं!