Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

बहुत बड़ी mysql तालिका और रिपोर्टिंग

partition . में देख कर प्रारंभ करें अपनी तालिका में यदि आपने पहले से ऐसा नहीं किया है:

http://dev.mysql.com/doc/refman/5.1 /hi/partitioning.html

http://www.slideshare.net/datacharmer/mysql-partitions-tutorial ए>

http ://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html

आप अपने डेटा को 'समेकित' कैसे कर रहे हैं? हो सकता है कि आप जिस विधि का उपयोग कर रहे हैं वह इष्टतम न हो। एक अच्छा तरीका (मुझे बताएं कि क्या यह वास्तव में आप कर रहे हैं) एक तालिका बनाना है जिसमें समेकित डेटा शामिल है। फिर इसे इस तरह सेट करें:

सबसे पहले डेटा को आपकी मुख्य तालिका में कैसे डाला जा रहा है, इसे अलग रखें...

  • मुख्य तालिका में डेटा कैसे लोड किया जाता है, इसके सापेक्ष एक निर्दिष्ट अंतराल पर चलने वाली नौकरी (क्रॉन या जो कुछ भी आपके पास आसान या पहले से कॉन्फ़िगर किया गया हो) बनाएं (चलिए इसे MAIN कहते हैं) , आगे बढ़ते हुए)। यदि आपकी MAIN तालिका प्रति घंटा लोड हो जाती है, तो इसे सिंक करें। आधा घंटा? कोई फर्क नहीं पड़ता। आप वैसे भी गति की जांच कर सकते हैं, या यदि आपकी रिपोर्ट चलने के व्यस्ततम घंटों के करीब है, तो उसके निकट शेड्यूल करें

  • समेकित डेटा के लिए अपनी तालिका को उचित रूप से अनुक्रमित करें। चलिए इसे AGG कहते हैं आगे बढ़ रहा है।

  • एक संग्रहीत कार्यविधि बनाएं जो डेटा को MAIN से AGG में लोड करती है, जो मूल रूप से एक AGG LOAD FOR INTERVAL-? है . बेशक, यहां केवल आप ही जानते हैं कि डेटा को MAIN में कैसे या कब डाला जाता है, इसलिए आप भी वही होंगे जो यह जानता है कि एकत्रीकरण का इरादा क्या है। अगर एग्रीगेशन का इरादा पूरा नहीं होता है, तो एग्रीगेटिंग स्टोर की गई प्रक्रिया को चालू रखना भी संभव है (जैसे कि यह पूरे दिन के लिए है.. इसलिए यह सेट होने तक एक संचयी रन है)

  • STAGING का उपयोग करें टेबल। मेरे लिए, वे सबसे अच्छे हैं

  • एक संग्रहीत कार्यविधि बनाएँ जो डेटा की पुन:जाँच करे, ताकि इस प्रक्रिया को चलाकर कोई भी अद्यतन या रिकॉर्ड का अतिरिक्त सम्मिलन AGG तालिका में दिखाई दे सके। श्रेणी को अद्यतन करने के लिए पैरामीटर शामिल करें। यदि यह दैनिक है, तो आपके पास DAILY AGG LOAD . है और DAILY AGG RELOAD प्रक्रिया। एक AGG CHECK INTERVAL शामिल करें और AGG CHECK DAILY प्रक्रिया जो आपको रात में अच्छी नींद लेने में मदद करेगी। ओह और AGG DATA HOLE CHECK का उल्लेख नहीं करना चाहिए या एक MISSING AGG DATA CHECK और व्यावसायिक नियम लागू करते हैं जो आवश्यक न्यूनतम मात्रा में डेटा के लिए जाँच को लागू करते हैं जो आप एकत्रित तालिका या मुख्य तालिका या स्टेजिंग तालिका से प्राप्त कर सकते हैं (अधिमानतः)

  • बेशक, कभी भी AGG में बदलाव न करें मेज़। इसे हमेशा केवल पुनः लोड करें।

  • यह कैसे मदद करता है? क्या तब आपको केवल अपनी रिपोर्ट्स को AGG . के लिए क्वेरी करने की आवश्यकता नहीं होगी? तालिका, जो छोटी और तेज़ है (चूंकि एकत्रीकरण पहले ही किया जा चुका है)? हो सकता है कि प्रदर्शन समस्या अंतराल लोडिंग के साथ आती है, लेकिन यदि आप अपनी तालिका, इसकी अनुक्रमणिका और इसके रखरखाव को ठीक से व्यवस्थित करते हैं, तो यह इसके लायक होना चाहिए।

  • विभाजन कहाँ आता है? संग्रह। एक बार एक निश्चित समय बीत जाने के बाद (चर्चा करें कि आपकी टीम/बॉस/टॉप मैन के साथ क्या स्वीकार्य है) आप पुराने डेटा को MAIN से संग्रहित कर सकते हैं। . मुझे उत्पादन डेटाबेस में 1 वर्ष का डेटा रखने का अनुभव हुआ। उस तरह से एक ड्रैग की तरह महसूस किया गया था, लेकिन क्योंकि यह ग्राहक का अनुरोध था, कंपनी के पास मुझे डिस्क स्थान देने के अलावा कोई विकल्प नहीं था (हाथों को रगड़ना) और लड़के ने इसके साथ तब तक खेला जब तक मुझे कुछ ठीक से नहीं चल रहा था। मुझे यह उल्लेख करना चाहिए कि मेरा अनुभव Microsoft SQL Server 2005 के साथ था, और संग्रहीत कार्यविधियाँ और SSIS ने इसे मज़ेदार बना दिया।

यह सब तब है जब आप इसे पहले से नहीं जानते हैं, और अन्य लोगों के लिए जो विकल्पों पर विचार करना चाहते हैं। मैं यह नहीं कह रहा हूं कि आप उपरोक्त में से कोई भी पहले से नहीं जानते थे; मैं केवल वही बता रहा हूं जो मैं पहले कर पाया हूं - यह देखते हुए कि आपके पास आपके पोस्ट से काम करने के लिए और अधिक जानकारी नहीं है, सिवाय इसके कि आपके पास एक समेकन प्रक्रिया है जिसे आपने आजमाया था ..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. %s ऑपरेटर का उपयोग करके पायथन में MySQL डेटाबेस बनाएं

  2. MySql.Data.MySqlClient.MySqlException:टाइमआउट समाप्त हो गया

  3. MySQL उसी कॉलम के मानों के आधार पर एक ही कॉलम पर कई पंक्तियों को अपडेट करें

  4. mysql से PDO में कनेक्शन और क्वेरी को फिर से लिखें

  5. MySQL डेटाबेस में चेकबॉक्स मान संग्रहीत करने का सबसे अच्छा तरीका क्या है?