हमारे पास यह बड़ा डेटाबेस (> 1 टीबी) है जिसे हम "सिकोड़ना" चाहते हैं। डेटाबेस एक मुख्य इकाई के चारों ओर घूमता है, चलो इसे "भेंट" कहते हैं। चर्चा के लिए, मान लें कि यह एक चिकित्सा पद्धति का डेटाबेस है।
कुल 30 विज़िट "प्रकार" हैं, जैसे कि प्रक्रिया, वार्षिक, अनुवर्ती, टीकाकरण आदि, जिनमें से प्रत्येक "विज़िट", जैसे "विज़िट_इमुनो" के लिए एक सहायक तालिका है।
डेटाबेस ने 2000 के बाद से 12 साल के कुछ डेटा को संचित किया है। किसी ने प्रस्ताव दिया है कि हम "लाइव" संस्करण में लगभग 3 साल का डेटा रखते हैं और बाकी के "old_data" डेटाबेस में रहते हैं। सामान्य होने के बाद से तारीख केवल "विज़िट" तालिका में संग्रहीत की जाती है। विजिट टेबल में एक ROWVERSION
कॉलम और एक BIGINT
छद्म पहचान (क्लस्टर) है। सभी इरादों और उद्देश्यों के लिए, मान लें कि क्लस्टरिंग कुंजी एक SEQUENCE (SQL Server 2012 एंटरप्राइज) द्वारा पॉप्युलेट की गई है - हम इसे नाम देंगे cid
।
visit.date
जब एक डॉक्टर विस्तारित visitations और उसके डेटा के "अटैची" के साथ रिटर्न पर चला जाता है क्लस्टरिंग कुंजी, उदाहरण के लिए के रूप में एक ही क्रम में हमेशा नहीं है, यह मुख्य तालिका में विलय हो जाता है। "विज़िट" टेबल के लिए कुछ अपडेट भी हैं जो ROWVERSION
स्तंभ को सिंक cid
और date
कॉलम दोनों से बाहर करने का कारण बनेंगे - इसे बस रखने के लिए, न तो ROWVERSION
और न ही cid
इस कारण के लिए उपयुक्त विभाजन कुंजी बनाएंगे।
"लाइव" से डेटा हटाने के लिए व्यापार नियम यह है कि visit.date
36 महीने से अधिक होना चाहिए और एक बच्चा visit_payment
रिकॉर्ड होना चाहिए। इसके अलावा, "old_data" डेटाबेस में बेस टेबल के अलावा कोई भी नहीं है visit%
।
तो हम साथ समाप्त करते हैं:
लाइव डीबी (दैनिक उपयोग) - सभी टेबल ओल्ड-डेटा डीबी - visit%
टेबल के लिए पुराने डेटा
प्रस्ताव एक संयुक्त डीबी के लिए कहता है जो एक शेल है जिसमें सभी बेस टेबलों के सिवाय एक समानार्थी शब्दLive DB
(सिवाय इसके visit%
) प्लस व्यूज़ हैं जो visit%
दो डेटाबेस में टेबल के पार UNION ALL हैं ।
Old-Data
डीबी में समान इंडेक्स बनाए जाने पर , क्या सवाल UNION-ALL व्यूज पर अच्छा प्रदर्शन करेंगे ? यूनिअन-ऑल व्यू के लिए निष्पादन योजना में किस प्रकार के क्वेरी पैटर्न हो सकते हैं ?