एसक्यूएल - एक बड़ी मेज को विभाजित करें कि कितनी बार उन्हें एक्सेस किया जाता है? - एसक्यूएल, postgresql

मेरे पास एक मेज है जिसमें 50 फ़ील्ड हैं:

  1. 10 फ़ील्ड्स जिनकी लगभग हमेशा आवश्यकता होती है।
  2. 40 फील्ड्स जिनकी बहुत कम जरूरत होती है।

मैं मोटे तौर पर कहूंगा कि (2) के क्षेत्रों में (2) के क्षेत्रों की तुलना में 1000 गुना अधिक बार पहुंचने की आवश्यकता है।

क्या मुझे उन्हें एक-से-एक संबंध के साथ दो तालिकाओं में विभाजित करना चाहिए, या सभी को एक ही तालिका में रखना चाहिए?

उत्तर:

उत्तर № 1 के लिए 1

आप जिस प्रक्रिया का वर्णन कर रहे हैं वह कभी-कभी होती है"ऊर्ध्वाधर विभाजन" के रूप में जाना जाता है। एक चरम (एक स्तंभ प्रति ऊर्ध्वाधर विभाजन) पर ले जाया जाता है, इस तरह से स्तंभ डेटाबेस डेटा संग्रहीत करता है। दुर्भाग्य से (मेरे ज्ञान का सबसे अच्छा करने के लिए), Postgres में वर्तमान में ऊर्ध्वाधर विभाजन के लिए प्रत्यक्ष समर्थन नहीं है।

डेटा को दो टेबल में विभाजित करने का आपका विचार ठीक है। मैं निम्नलिखित पर ध्यान दूंगा:

  • आपको दूसरी तालिका का उपयोग करने के लिए अतिरिक्त कॉलम का उपयोग करने वाले प्रश्नों को संशोधित करना होगा। (आप लपेट सकते हैं join जब आप अतिरिक्त कॉलम चाहते हैं तो एक दृश्य में जो आप उपयोग करते हैं।)
  • यदि दोनों तालिकाओं में एक संकुल प्राथमिक कुंजी होती है जो उन्हें जोड़ती है, तो join वास्तव में तेज होना चाहिए।
  • यदि आप डेटा सम्मिलित / अद्यतन / हटा रहे हैं, तो आपको सिंक्रनाइज़ेशन के बारे में सावधान रहने की आवश्यकता है मुझे लगता है कि आप इसे संभाल सकते हैं INSTEAD OF तालिकाओं के संयोजन को देखते हुए ट्रिगर करें।
  • यदि कुछ रिकॉर्ड में अतिरिक्त कॉलम नहीं हैं, तो यह अंतरिक्ष की तरफ एक बड़ी जीत हो सकती है।
  • यदि सभी रिकॉर्ड और सभी कॉलम कैश में लोड होने जा रहे हैं, तो यह शायद एक बड़ी जीत नहीं है।

यह कुछ परिस्थितियों में एक बड़ी प्रदर्शन जीत हो सकती है। लेकिन तालिकाओं को सिंक्रनाइज़ रखने के लिए अतिरिक्त मैनुअल काम है।


जवाब के लिए 0 № 2

वहाँ वास्तव में लगभग पर्याप्त जानकारी नहीं है यहाँ अनुमान लगाने के लिए (वास्तव में मन कभी नहीं मात्रा ठहराना) क्या लाभ हो सकता है, लेकिन लागत बहुत स्पष्ट है - अधिक जटिल कोड, एक अधिक जटिल स्कीमा, संभवतः अधिक से अधिक समग्र अंतरिक्ष उपयोग और पंक्तियों को जोड़ने और हटाने पर एक प्रदर्शन उपरि

एक प्रदर्शन सुधार से आ सकता हैपूर्ण टेबल स्कैन करते समय, या आवश्यकता पड़ने पर मेमोरी में डेटा ब्लॉक खोजने की संभावना में वृद्धि, और समग्र रूप से छोटे मेमोरी फ़ुटप्रिंट पर डेटा की थोड़ी मात्रा को स्कैन करना, लेकिन आमतौर पर किए गए ऑपरेशन के प्रकारों पर विशेष जानकारी के बिना, और क्या सर्वर स्मृति दबाव में है, कोई विश्वसनीय सलाह नहीं दी जा सकती है।

अनिश्चित प्रदर्शन लाभ के साइड-इफेक्ट के रूप में अपने सिस्टम को अधिक जटिल बनाने से बहुत सावधान रहें।


संबंधित सवाल
सबसे लोकप्रिय