2010-09-27 10 views
24

में मैं एसक्यूएल में जानते हैं कि हम इस तरह का पाठ क्षेत्र सेक कर सकते हैं:पाठ संपीड़न PostgreSQL

CREATE TABLE TableName (FieldName CHARACTER(255) WITH COMPRESSION); 

मुझे पता है कि कैसे Postgres में पाठ संपीड़न हासिल करना चाहते हैं।

+0

दुकान संकुचित स्ट्रिंग, डॉक्स से देख भी http://stackoverflow.com/q/2958073/287948 –

उत्तर

26

संपीड़न सभी स्ट्रिंग प्रकार के लिए डिफ़ॉल्ट रूप से सक्षम है, तो आप डेटाबेस यह करने के लिए बताने के लिए नहीं है। मैनुअल के बारे में TOAST

  • मैदान या तो संपीड़न या रोकता चेक आउट-ऑफ-लाइन भंडारण; इसके अलावा varlena प्रकारों के लिए एकल-बाइट शीर्षलेख का उपयोग अक्षम करता है। गैर-टोस्ट-सक्षम डेटा प्रकारों के कॉलम के लिए यह केवल संभावित रणनीति है।
  • विस्तारित संपीड़न और आउट-ऑफ-लाइन स्टोरेज दोनों की अनुमति देता है। यह अधिकांश TOAST- सक्षम डेटा प्रकारों के लिए डिफ़ॉल्ट है। संपीड़न का प्रयास पहले किया जाएगा, तो पंक्ति के बाहर आउट-ऑफ़-लाइन स्टोरेज अभी भी बहुत बड़ी है।
  • बाहरी आउट ऑफ़लाइन स्टोरेज लेकिन संपीड़न नहीं देता है। बाहरी उपयोग की विस्तृत पाठ और bytea स्तंभों पर सबस्ट्रिंग संचालन कर देगा तेजी क्योंकि इन आपरेशनों केवल आवश्यक आउट-ऑफ-लाइन मूल्य के कुछ हिस्सों जब लाने के लिए अनुकूलित कर रहे हैं (वृद्धि हुई भंडारण अंतरिक्ष के दंड पर) यह संपीड़ित नहीं है।
  • मुख्य संपीड़न की अनुमति देता है लेकिन आउट-ऑफ-लाइन स्टोरेज नहीं देता है। (वास्तव में, आउट-ऑफ-लाइन भंडारण अभी भी किया जा इस तरह के कॉलम के लिए प्रदर्शन किया जाएगा, लेकिन केवल एक अंतिम उपाय के रूप में जब वहाँ पंक्ति छोटे एक पृष्ठ पर फिट करने के लिए पर्याप्त बनाने के लिए नहीं अन्य तरीका है।)
+5

, यह टोस्ट संपीड़न की तरह दिखता है के लिए अधिक से अधिक 2KB से बड़ा मूल्यों के लिए ही सक्रिय होता है। ओपी का उदाहरण 2k थ्रेसहोल्ड नहीं मारा जाएगा, और इस प्रकार संपीड़ित नहीं किया जाएगा। –

+0

आप संपीड़न लागू कर सकते हैं, भंडारण मापदंडों पर निर्भर करता है: http://www.postgresql.org/docs/current/interactive/storage-toast.html –

+1

TOAST_TUPLE_THRESHOLD बदलकर? मुझे लगता है कि एक recompile की आवश्यकता है? –