हम एक ऐसी समस्या में चल रहे हैं, जिसमें लगभग 50 मिलियन पंक्तियों वाली तालिका को क्वेरी करते हैं, और डेटाबेस सर्वर स्वैप मेमोरी में 4 जीबी (तालिका आकार लगभग 6 जीबी) के परिणाम का आकार होता है, और नाटकीय रूप से धीमा हो जाता है। मुझे पूरा यकीन है कि यह अस्थायी तालिका आकार को पार करने के साथ है, और इसे डिस्क पर स्वैप किया जा रहा है।
अगर मैंने अपने डेटाबेस सर्वर को 32 जीबी रैम से 64 जीबी रैम में अपग्रेड किया है, तो मुझे आश्चर्य है कि क्या MySQL डेटाबेस इस अतिरिक्त मेमोरी का पूरी तरह से लाभ उठा पाएगा और स्वैप नहीं कर पाएगा। मैं कुछ चर (जैसे KEY_BUFFER_SIZE, आदि ...) के माध्यम से चला गया हूं, और वे 64 जीबी से अधिक के मानों का समर्थन करते प्रतीत होते हैं। हालाँकि, MySQL प्रलेखन का कहना है कि tmp_table_size अधिकतम 4 जीबी है।
तो क्या मेमोरी अपग्रेड इसके लायक होगा? क्या "क्वेरी-लार्ज-टेबल" समस्या से लाभ होगा, या 4 जीबी सीमा के कारण यह मदद नहीं करेगा? मुझे पता है कि संभावित रूप से अन्य समाधान भी हैं जैसे कि टेबल को अलग-अलग तरीकों से विभाजित करना, आदि ... लेकिन टेबल के बारे में कुछ भी बदले बिना, अतिरिक्त मेमोरी मदद करेगा?
इसके अलावा, सामान्य तौर पर, क्या कोई अन्य मेमोरी से संबंधित चर हैं जो 32 से 64 जीबी रैम से चलते समय MySQL का लाभ नहीं उठा पाएंगे?
हम अपने डेटाबेस सर्वर के रूप में 64 बिट लाइनक्स (उबंटू) का उपयोग कर रहे हैं।
धन्यवाद, गैलेन