यदि आप बड़ी मात्रा में डेटा की बात कर रहे हैं, तो MySQL विभाजन को देखें। . इन तालिकाओं के लिए, डेटा/समय के आधार पर विभाजन निश्चित रूप से प्रदर्शन में मदद करेगा। विभाजन के बारे में एक अच्छा लेख है यहां ।
दो अलग-अलग डेटाबेस बनाने पर विचार करें:एक न्यूनतम अनुक्रमण के साथ लिखने के लिए सभी कच्चे डेटा के लिए; समेकित मूल्यों का उपयोग करके रिपोर्टिंग के लिए एक सेकंड; कच्चे डेटा डेटाबेस से रिपोर्टिंग डेटाबेस को अपडेट करने के लिए बैच प्रक्रिया के साथ, या आपके लिए ऐसा करने के लिए प्रतिकृति का उपयोग करें।
संपादित करें
यदि आप अपनी एकत्रीकरण रिपोर्ट के साथ वास्तव में चतुर होना चाहते हैं, तो एकत्रीकरण तालिकाओं का एक सेट बनाएं ("आज", "सप्ताह से आज तक", "महीने से तारीख", "वर्ष के अनुसार")। कच्चे डेटा से "आज" या तो दैनिक या "वास्तविक समय" में एकत्र करें; रात के आधार पर "दिन के हिसाब से" से "सप्ताह से आज तक" का योग; साप्ताहिक आधार पर "सप्ताह से आज तक" से "महीने से आज तक", आदि। क्वेरी निष्पादित करते समय, अपनी रुचि की तिथि सीमाओं के लिए उपयुक्त तालिकाओं में शामिल हों।
#2 संपादित करें
प्रति क्लाइंट एक टेबल के बजाय, हम प्रति क्लाइंट एक डेटाबेस स्कीमा के साथ काम करते हैं। क्लाइंट के आकार के आधार पर, हमारे पास एक डेटाबेस इंस्टेंस में कई स्कीमा हो सकते हैं, या प्रति क्लाइंट एक समर्पित डेटाबेस इंस्टेंस हो सकते हैं। हम कच्चे डेटा संग्रह के लिए और प्रत्येक क्लाइंट के लिए एकत्रीकरण/रिपोर्टिंग के लिए अलग-अलग स्कीमा का उपयोग करते हैं। हम कई डेटाबेस सर्वर चलाते हैं, प्रत्येक सर्वर को एक डेटाबेस इंस्टेंस तक सीमित रखते हैं। लचीलेपन के लिए, डेटाबेस को कई सर्वरों पर दोहराया जाता है और बेहतर प्रदर्शन के लिए संतुलित लोड किया जाता है।