SQL सर्वर डेटा संपीड़न स्पष्ट रूप से केवल-पढ़ने के लिए डेटाबेस के लिए अच्छा है?


11

SQL सर्वर डेटा कम्प्रेशन पर कुछ साहित्य मैंने पढ़ा है कि लिखने की लागत लगभग चार गुना बढ़ जाती है जो सामान्य रूप से आवश्यक होगी। यह भी प्रतीत होता है कि यह डेटा संपीड़न के लिए प्राथमिक नकारात्मक पक्ष है, दृढ़ता से यह कहते हुए कि केवल-पढ़ने के लिए संग्रह डेटाबेस के लिए, प्रदर्शन (कुछ एक्सेपियन tions के साथ) 100% भरे हुए पृष्ठों के डेटा संपीड़न के उपयोग से बेहतर होगा।

  1. क्या कथन सही हैं?
  2. डेटा संपीड़न और अन्यथा (पढ़ने के लिए) के बीच प्राथमिक "विविधताएं" क्या हैं

    • "CPU + x%"?
    • "IO -y%"?
    • पृष्ठ विभाजन घटना?
    • अस्थायी उपयोग?
    • रैम का उपयोग?
  3. और लिखने के लिए?

इस प्रश्न के उद्देश्य के लिए, आप एक बड़े (> 1TB) डेटाबेस के पृष्ठ-स्तर संपीड़न के संदर्भ को सीमित कर सकते हैं , लेकिन अतिरिक्त टिप्पणियों का हमेशा स्वागत है।


संदर्भ:

SQL सर्वर संग्रहण इंजन ब्लॉग (DW परिदृश्य बहुत लाभप्रद होने के लिए संपीड़न दिखाता है)
डेटा संपीड़न: रणनीति, क्षमता योजना और सर्वोत्तम व्यवहार

प्रत्येक टेबल और इंडेक्स के लिए वर्कलोड विशेषताओं का विश्लेषण करने के लिए क्या करना है, यह तय करने के लिए एक अधिक विस्तृत दृष्टिकोण। यह निम्नलिखित दो मैट्रिक्स पर आधारित है:

यू: उस ऑब्जेक्ट पर कुल ऑपरेशन के सापेक्ष एक विशिष्ट टेबल, इंडेक्स या विभाजन पर अपडेट संचालन का प्रतिशत। U का मान कम होता है (यानी टेबल, इंडेक्स, या विभाजन बार-बार अपडेट किया जाता है), यह पृष्ठ संपीड़न के लिए बेहतर उम्मीदवार है।
एस: उस ऑब्जेक्ट पर कुल ऑपरेशन के सापेक्ष एक टेबल, इंडेक्स या विभाजन पर स्कैन संचालन का प्रतिशत। S का मान जितना अधिक होता है (वह है, टेबल, इंडेक्स, या विभाजन ज्यादातर स्कैन किया जाता है), यह पृष्ठ संपीड़न के लिए बेहतर उम्मीदवार है।

उपरोक्त दोनों DW-style डेटाबेस (रीड-इंटेंसिव / एक्सक्लूसिव, बिग-डेटा ऑपरेशंस) के लिए पेज कम्प्रेशन की अनुशंसा करने के लिए demonstrably पक्षपाती हैं।


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

3
आपके द्वारा मांगे जा रहे किसी भी मीट्रिक को प्रदान करना बहुत मुश्किल होने वाला है क्योंकि यह पूरी तरह से डेटा की प्रकृति और इसे संपीड़ित करने की क्षमता पर निर्भर करता है (और यह पंक्ति बनाम पृष्ठ के आधार पर अलग-अलग होने जा रहा है, साथ ही साथ )। कुछ लोगों ने 90% संपीड़न अनुपात की सूचना दी है जो कि स्मृति उपयोग (सकारात्मक तरीके से) और सीपीयू दोनों पर प्रभाव डाल रहा है ताकि बहुत अधिक संपीड़न हो सके। यह पेपर पंक्ति संपीड़न के लिए 10% पर CPU ओवरहेड करता है और पृष्ठ के लिए उच्चतर होता है । आप जो देखते हैं वह काफी भिन्न हो सकता है।
हारून बर्ट्रेंड

1
केवल-पढ़ने के लिए संग्रह डेटाबेस के लिए, मुझे लगता है कि सवाल यह होगा कि क्या यह स्मृति में फिट हो सकता है। यदि यह सभी मेमोरी में फिट हो सकता है तो एक बार इसे बफर पूल में लोड करने के बाद इसे संकुचित होने का कोई वास्तविक लाभ नहीं है। यदि, हालांकि, यह सभी मेमोरी में फिट नहीं हो सकता है, तब भी आपको कैश के अंदर और बाहर कम पृष्ठों की अदला-बदली करने में कुछ लाभ दिखाई दे सकता है, हालांकि इसे अनलॉकर करने पर काम करना होगा।
हारून बर्ट्रेंड

आपके द्वारा जोड़े गए लिंक में से कोई भी लिखने के लिए इस 4x दंड का कोई उल्लेख नहीं करता है। क्या आपको याद है कि आपने कहां से उठाया? संदर्भ देखना चाहेंगे।
हारून बर्ट्रेंड

1
ठीक है अगर आप डेटा को मेमोरी में फिट नहीं कर सकते हैं तो परिदृश्य की तरह मूट है, है ना? :-)
हारून बर्ट्रेंड

जवाबों:


6

1-2 साल पुराने हार्डवेयर पर मेरे अपने प्रयोगों से सिर्फ 2 सेंट:

पृष्ठ-संपीड़ित तालिकाओं (~ 80row / पृष्ठ) पर केवल-संचालन (DW- शैली स्कैन, सॉर्ट्स आदि) मैंने ~ 3x की संपीड़न आकार में कमी पर भी पाया है।

यानी अगर टेबल किसी भी तरह से मेमोरी में फिट होती हैं, तो पेज कंप्रेशन केवल प्रदर्शन को लाभ देता है यदि डेटा का आकार 3x से कम हो गया हो। आप स्मृति में कम पृष्ठों को स्कैन करते हैं, लेकिन प्रत्येक पृष्ठ को स्कैन करने में अधिक समय लगता है।

अगर आपकी योजना नेस्टेड-लूप और हैवी है तो मुझे लगता है कि आपका माइलेज अलग-अलग हो सकता है। दूसरों के बीच, यह हार्डवेयर-निर्भर (विदेशी NUMA नोड एक्सेस पेनल्टी, मेमोरी स्पीड आदि) भी होगा।

उपरोक्त केवल एक मोटा नियम है, जिसका मैं पालन करता हूं, अपने स्वयं के हार्डवेयर (डेल पॉवरेज 910 और युवा) पर मेरे स्वयं के प्रश्नों का उपयोग करते हुए परीक्षण के आधार पर। यह सुसमाचार नहीं है एह!

संपादित करें: कल थॉमस केसर की उत्कृष्ट SQLBits XI प्रस्तुति एक वीडियो के रूप में उपलब्ध कराई गई थी। इस चर्चा के लिए काफी प्रासंगिक, यह पृष्ठ संपीड़न के लिए सीपीयू लागत का 'बदसूरत' चेहरा दिखाता है - अपडेट 4x से धीमा हो गया, काफी लंबे समय तक आयोजित ताले।

हालांकि , थॉमस फ्यूजनियो स्टोरेज का उपयोग कर रहा है और उसने एक टेबल उठाया है जो पेज कम्प्रेशन के लिए केवल 'सिर्फ' योग्य है। यदि भंडारण एक विशिष्ट SAN पर था और डेटा ने संपीडित 3x-4x का उपयोग किया तो चित्र कम नाटकीय हो सकता है।


1
क्या वह पुराना हार्डवेयर हो सकता है? नए हार्डवेयर पर, भंडारण के लिए नंगे SSD, मुझे लगता है कि कोर आसानी से डिस्क के साथ नहीं रख पा रहे हैं। मैं noramlly thuoght लाभ एक बहुत आसानी से शुरू होगा - IO में एक 50% की कमी अच्छी तरह से इसके लायक है जब वह कई बदलाव नहीं कर रहा है।
टॉमटॉम

TomTom, Storage इन आंकड़ों के लिए खेलने में नहीं आता है। तुलना असम्पीडित-तालिकाओं-इन-मेमोरी और संपीड़ित-टेबल-इन-मेमोरी के बीच है।
जॉन एलन

कभी ऐसा DWH नहीं देखा जो याददाश्त के लिए काफी अच्छा हो। गंभीरता से। आप डिस्क पर वापस आ जाएंगे।
टॉमटॉम

1
हां, आप कभी-कभार डिस्क पर वापस आ जाएंगे - डिस्क से रीडिंग वह जगह है जहां पेज-कम्प्रेशन लगभग हमेशा एक एज होता है (डेटा को पर्याप्त रूप से कंप्रेस करने योग्य है!)। लेकिन अगर आपका वर्कलोड एक बार डिस्क से लोड हो जाता है और फिर शेष दिन मेमोरी में सब कुछ हेरफेर करता है - आप डिस्क रीडिंग को कितना वजन देंगे और इन-मेमोरी ऑपरेशंस को कितना?
जॉन एलन

1
बस थॉमस Kejser द्वारा SQLBits 2013 से एक प्रासंगिक प्रस्तुति slidedeck भर में आया था: slideshare.net/fusionio/...
जॉन एलन

0

मैं अपने डेटा वेयरहाउस वातावरण से कुछ शब्द जोड़ सकता हूं।

30 मील की पंक्तियों (18GB) के साथ एक परीक्षण तालिका पर संपीड़न (मेरे मामले में पृष्ठ) को लागू करने से तालिका का आकार 18GB से 3GB तक कम हो जाता है! (सुनिश्चित करने के लिए भंडारण दक्षता) लेकिन लोड समय (लेखन) को 22 से 36 मिनट तक बढ़ाएं।

इसलिए डेटा को पढ़ने या पढ़ने और मेमोरी में रखने के लिए यह एक अच्छा समाधान हो सकता है लेकिन दैनिक डेटा लोड के लिए यह प्रदर्शन में गिरावट का कारण बन सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.