Voltdb Partitioning -
आइये कि मेरे पास टेबल है
id col1 col2 col3 1 एबीसी डीईएफ एक्सवाईजेड 2 XXX YYY ZZZ < / पूर्व>अधिकांश अक्सर प्रश्नों को एक्सवाईजेड से
SELECT * होने वाला है जहां x1Z से col1 = 'abc' और col2 = 'def' SELECT * जहां col1 = 'abc' और वोल्टडीबी डॉक्स के अनुसार: -
- विभाजन को स्तंभ पर किया जाना चाहिए जिस पर अधिकतर
- एक कॉलम पर विभाजन करना चाहिए
मुझे कोई उदाहरण नहीं मिल सका जहां कई स्तंभों पर खोज की जाती है
मुझे आश्चर्य है कि बहु स्तंभ खोजों के लिए विभाजन तालिका का सबसे अच्छा तरीका क्या है?
संपादित करें: -
या यदि मेरी क्वेरी की तरह हो तो: -
SELECT * से XYZ जहां col1 IN ('abc', .. ।, ...) और col2 IN ('def', ...) और col3 IN ('xyz', ...)।
एक स्तंभ चुनने के लिए दिशानिर्देश:
सबसे पहले, आपको एक विभाजन कॉलम चुनना चाहिए जिसमें कई भिन्न मान हैं उदाहरण के लिए, यदि आपके पास दो से अधिक विभाजन (सामान्य) हैं, तो नर / महिला स्तंभ विभाजन को खराब करना।
यह अन्य मूल्यों पर हावी होने वाले कुछ मूल्यों के साथ एक स्तंभ को चुनना भी एक बुरा विचार है। यदि आपके 20% मूल्यों को नल है, तो आपकी 20% से अधिक पंक्तियां उसी स्थान पर विभाजित हो जाएंगी। वितरकों को भी नहीं होना चाहिए, लेकिन यदि आपके पास "गर्म" मान हैं, तो कम से कम विभाजनों की तुलना में बहुत अधिक "गर्म" मूल्य प्राप्त करने में मददगार है।
टाइमस्टैंप को चुनना भी मुश्किल हो सकता है यदि टाइमस्टैम्प अग्रिमों को घूस की दर से धीमा। इस मामले में आपका भार एक-एक-एक-एक बार जब टाइमस्टैम्प की अग्रिम होती है तो विभाजन को राउंड-रोबिन करेगा। हालांकि अभ्यास में एक एकल विभाजन अक्सर प्रति सेकंड 10-50k सम्मिलित करता है, इसलिए यह वास्तव में गैर-अपस्टिम उपयोग के मामलों के लिए काम करता है।
इसलिए यदि आप बहुत सारे मूल्यों वाले स्तंभ पर विभाजन करते हैं जो बहुत समान रूप से वितरित किए जाते हैं
प्रश्नों को अनुकूलित करने के लिए एक कॉलम को चुनना:
अब प्रश्न बन जाता है, उम्मीदवार कॉलम का एक सेट दिया गया, क्या आप अपने प्रश्नों को तेजी से चलाने के लिए एक चुन सकते हैं?
विभाजन कॉलम में एक समानता परीक्षण से मेल खाने वाली कोई भी क्वेरी एक ही पार्टीशन पर भेजी जा सकती है। उपरोक्त आपके उदाहरण में, यदि आपने col1 या col2 पर विभाजन किया है, तो दोनों प्रश्न एक विभाजन होंगे। यदि आप कोले 3 पर विभाजन किया है, तो केवल दूसरी क्वेरी एक ही विभाजित हो जाएगी।
विभाजन कॉलम स्पष्ट हो जाएगा, शायद ग्राहक आईडी या टिकट प्रतीक। लेकिन भले ही यह स्पष्ट हो, और खासकर यदि ऐसा नहीं है, तो आप उन विभाजनों को चलाने के लिए चाहते हैं जो विभाजन नहीं करते हैं। अच्छी खबर यह है कि वोल्टडीबी 4.0 ने पिछले संस्करणों की तुलना में नाटकीय रूप से तेजी से क्रॉस-पार्टिशन प्रश्नों को पढ़ने के लिए बनाया है। हमारे आंतरिक बेंचमार्क दर्शाते हैं कि प्रति सेकंड हजारों प्रश्नों की संभावना संभव है।
क्रॉस-पार्टिशन पढ़ने के इस स्तर को गैर-विभाजित RDBMSs के पढ़ने के प्रदर्शन की तुलना में अक्सर बेहतर होता है। तो वोल्टडीबी 4.0 में, यह लिखने की तुलना में लेखन कार्यों के लिए विभाजन के लिए अब और अधिक महत्वपूर्ण है। इससे थोड़ा सा विभाजन बनता है।
Comments
Post a Comment