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

हम एक mysql तालिका को कई छोटी तालिकाओं में क्यों विभाजित करते हैं?

मुझे लगता है कि आपने यहां कुछ शब्दों को मिला दिया है।

आपका सारा डेटा एक डेटाबेस (उर्फ स्कीमा) में चला जाता है। डेटाबेस में आपके पास टेबल हो सकते हैं।

उदा.

table employee
   id integer
   name varchar
   address varchar
   country varchar

table office
   id integer
   employee_id integer
   address varchar

टेबल के अंदर आपके पास फ़ील्ड हैं (id, name, address) उर्फ कॉलम। और तालिकाओं में एक या अधिक पंक्तियाँ होती हैं।
टेबल कर्मचारी के लिए एक उदाहरण:

id  name        address           country
----------------------------------------------------
1   John        1 Regent Street   UK
2   James       24 Jump Street    China
3   Darth Vader 1 Death Star      Bestine, Tatooine

मूल बातें के लिए बहुत कुछ।

विभाजन क्यों कर रहे हैं
अब मान लें कि हमारे डेटाबेस में बहुत सारे और बहुत से लोग (पंक्तियां) हैं।
इसे एक गांगेय डेटाबेस याद रखें, इसलिए हमारे पास 100 बिलियन रिकॉर्ड हैं।
अगर हम इतनी तेजी से गर्त खोजना चाहते हैं यह अच्छा है अगर हम इसे समानांतर में कर सकते हैं।
इसलिए हम तालिका को विभाजित करते हैं (देश के अनुसार) और फिर हम एक्स सर्वरों को 1 देश में देख सकते हैं।
सर्वर में विभाजन को sharding

या हम विभाजन कर सकते हैं उदा। साल के हिसाब से ऐतिहासिक डेटा, इसलिए हमें सभी . से गुज़रने की ज़रूरत नहीं है डेटा केवल हालिया . प्राप्त करने के लिए समाचार। हमें सिर्फ इस साल के बंटवारे से गुजरना है। इसे partitioning कहा जाता है ।

sharding के बीच बड़ा अंतर क्या है केवल partitioning कर सकते हैं ?

साझा करना
sharding में आप अनुमान लगाते हैं कि सभी आपका डेटा प्रासंगिक है, और समान रूप से पूछे जाने की संभावना है। (उदाहरण के लिए, Google उनके सभी डेटा को क्वेरी किए जाने की उम्मीद कर सकता है; उनके डेटा का हिस्सा संग्रह करना उनके लिए बेकार है)।
इस मामले में आप चाहते हैं कि बहुत सारी मशीनें आपके डेटा को समानांतर में देखें, जहां प्रत्येक मशीन का हिस्सा है काम।
तो आप प्रत्येक मशीन को डेटा का एक अलग विभाजन (शार्ड) देते हैं और सभी मशीनों को एक ही क्वेरी देते हैं। जब परिणाम सामने आते हैं तो आप UNION उन सभी को एक साथ और परिणाम आउटपुट।

मूल विभाजन
मूल रूप से partitioning आपके डेटा का कुछ हिस्सा hot है और भाग not है . एक विशिष्ट मामला ऐतिहासिक डेटा है, नया डेटा hot है , पुराना डेटा शायद ही छुआ जाता है।
इस उपयोग के मामले में पुराने डेटा को अलग सर्वर में रखना व्यर्थ है। वे मशीनें बस प्रतीक्षा करेंगी और प्रतीक्षा करेंगी और कुछ भी नहीं करेंगी क्योंकि किसी को भी पुराने डेटा की परवाह नहीं है सिवाय कुछ लेखा परीक्षकों के जो साल में एक बार इसे देखते हैं। क्वेरीज़ केवल एक (शायद 2) साल के डेटा को देखेंगी और बहुत तेज़ होंगी।

क्या मुझे विभाजन की आवश्यकता है?
आप विभाजन केवल तभी करते हैं जब आपके पास बहुत सारा डेटा हो, क्योंकि यह आपके सेटअप को जटिल बनाता है।
जब तक आपके पास एक मिलियन से अधिक रिकॉर्ड न हों, आपको विभाजन पर विचार करने की आवश्यकता नहीं है।
यदि आप 100 मिलियन से अधिक रिकॉर्ड हैं, आपको निश्चित रूप से इस पर विचार करना चाहिए।

अधिक जानकारी के लिए देखें:http://dev.mysql.com/ doc/refman/5.1/hi/partitioning.html
और:http://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html
विकी भी देखें:http://en.wikipedia.org/wiki /पार्टिशन_%28डेटाबेस%29

ये सिर्फ मेरे व्यक्तिगत अनुमान YMMV हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक बूलियन मान के साथ MySQL में JSON ऑब्जेक्ट कैसे बनाएं?

  2. मुझे विदेशी कुंजी कहाँ संग्रहीत करनी चाहिए?

  3. MySQL में MyISAM के साथ कार्य करना

  4. MySQL में डेटाबेस के आकार की जांच कैसे करें

  5. MySQL:#126 - तालिका के लिए गलत कुंजी फ़ाइल