PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

क्या पोस्टग्रेज में 1 बाइट नंबर स्टोर करना संभव है?

यह देखते हुए कि PostgreSQL में किसी भी पंक्ति के लिए ओवरहेड 23 बाइट्स<है। /ए> (HeapTupleHeaderData), यदि आप वास्तव में कम मात्रा में स्थान की परवाह करते हैं, तो संभवतः आपने अपने डेटा को संग्रहीत करने का गलत तरीका चुना है।

भले ही, सभी अधिक जटिल प्रकारों का अपना ओवरहेड होता है (बाइटा ओवरहेड के चार बाइट्स जोड़ता है, उदाहरण के लिए, बिट स्ट्रिंग्स 5 से 8), जो आप खोज रहे हैं उसे पूरा करने का एकमात्र तरीका एक बिगिंट (8 बाइट्स) का उपयोग करना है। प्रत्येक मान को संख्यात्मक रूप से स्थानांतरित करना और परिणाम को OR-ing करना। आप बिट स्ट्रिंग ऑपरेशंस का उपयोग करके ऐसा कर सकते हैं। कोड को आसान बनाने के लिए - बिट स्ट्रिंग के रूप में गणना करें, फिर स्टोर करने से पहले बिगिंट पर डालें - या यदि आप गति को बेहतर बनाना चाहते हैं तो मैन्युअल रूप से गुणा/जोड़ें। उदाहरण के लिए, यहां बताया गया है कि आप दो बाइट्स को एक साथ दो बाइट संरचना में कैसे संग्रहीत करते हैं और फिर उन्हें फिर से प्राप्त करते हैं:

int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256

आप उसी विचार को उनमें से 7 को संग्रहीत करने में बढ़ा सकते हैं। पुनर्प्राप्ति ओवरहेड अभी भी भयानक होने वाला है, लेकिन आपने वास्तव में इस प्रक्रिया में कुछ जगह बचाई होगी। लेकिन केवल पंक्ति शीर्षलेख के सापेक्ष बहुत अधिक नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मणि स्थापित पीजी libpq से बाध्य नहीं हो सकता

  2. पोस्टग्रेज सीटीई:टाइप कैरेक्टर अलग-अलग (255) [] गैर-पुनरावर्ती शब्द में लेकिन टाइप कैरेक्टर अलग-अलग [] समग्र रूप से

  3. उपश्रेणियों सहित संबंधित पंक्तियों की गणना कैसे करें?

  4. तारों को संग्रहित करने के लिए डेटा प्रकार टेक्स्ट का उपयोग करने का कोई डाउनसाइड्स?

  5. PostgreSQL का उपयोग करके क्लाइंट को डिस्कनेक्ट करने के लिए बाध्य करें