Django 2.1

Tablespaces




django

Tablespaces

डेटाबेस सिस्टम में प्रदर्शन के अनुकूलन के लिए एक सामान्य प्रतिमान डिस्क लेआउट को व्यवस्थित करने के लिए tablespaces का उपयोग है।

चेतावनी

Django आपके लिए टेबलस्पेस नहीं बनाता है। कृपया टेबलबेस बनाने और प्रबंधित करने के विवरण के लिए अपने डेटाबेस इंजन के दस्तावेज देखें।

तालिकाओं के लिए तालिकाओं की घोषणा

मॉडल के class Meta के अंदर db_tablespace विकल्प की आपूर्ति करके एक मॉडल द्वारा उत्पन्न तालिका के लिए एक टेबलस्पेस निर्दिष्ट किया जा सकता है। यह विकल्प मॉडल में ManyToManyField s के लिए स्वचालित रूप से बनाई गई तालिकाओं को भी प्रभावित करता है।

आप db_tablespace लिए डिफ़ॉल्ट मान निर्दिष्ट करने के लिए DEFAULT_TABLESPACE सेटिंग का उपयोग कर सकते हैं। यह अंतर्निहित Django ऐप्स और अन्य एप्लिकेशन के लिए एक टेबलस्पेस सेट करने के लिए उपयोगी है, जिनके कोड को आप नियंत्रित नहीं कर सकते।

अनुक्रमित के लिए तालिकाओं की घोषणा

आप Index कंस्ट्रक्टर के लिए db_tablespace विकल्प पास कर सकते हैं ताकि Index का उपयोग करने के लिए एक टेबलस्पेस का नाम निर्दिष्ट कर सकें। सिंगल फील्ड इंडेक्स के लिए, आप फ़ील्ड के कॉलम इंडेक्स के लिए वैकल्पिक टेबलस्पेस निर्दिष्ट करने के लिए Field कंस्ट्रक्टर के लिए db_tablespace विकल्प पास कर सकते हैं। यदि स्तंभ में अनुक्रमणिका नहीं है, तो विकल्प को अनदेखा कर दिया जाता है।

आप db_tablespace लिए डिफ़ॉल्ट मान निर्दिष्ट करने के लिए DEFAULT_INDEX_TABLESPACE सेटिंग का उपयोग कर सकते हैं।

यदि db_tablespace निर्दिष्ट नहीं है और आपने DEFAULT_INDEX_TABLESPACE सेट नहीं किया है, तो इंडेक्स टेबल के समान टेबलस्पेस में बनाया जाता है।

एक उदाहरण

class TablespaceExample(models.Model):
    name = models.CharField(max_length=30, db_index=True, db_tablespace="indexes")
    data = models.CharField(max_length=255, db_index=True)
    shortcut = models.CharField(max_length=7)
    edges = models.ManyToManyField(to="self", db_tablespace="indexes")

    class Meta:
        db_tablespace = "tables"
        indexes = [models.Index(fields=['shortcut'], db_tablespace='other_indexes')]

इस उदाहरण में, टेबल TablespaceExample मॉडल (यानी मॉडल तालिका और कई-से-कई तालिका) द्वारा उत्पन्न तालिकाओं को तालिकाओं में संग्रहीत किया जाएगा। नाम फ़ील्ड के लिए अनुक्रमणिका और कई-से-कई तालिका पर indexes को indexes तालिकाओं में संग्रहीत किया जाएगा। data फ़ील्ड एक इंडेक्स भी उत्पन्न करेगा, लेकिन इसके लिए कोई टेबलस्पेस निर्दिष्ट नहीं है, इसलिए इसे डिफ़ॉल्ट रूप से मॉडल टेबलस्पेस tables में संग्रहीत किया जाएगा। shortcut फ़ील्ड के लिए इंडेक्स को other_indexes टेबलस्पेस में संग्रहीत किया जाएगा।

डेटाबेस का समर्थन

PostgreSQL और Oracle समर्थन तालिकाएँ। SQLite और MySQL नहीं है।

जब आप एक बैकएंड का उपयोग करते हैं जिसमें टेबलस्पेस के लिए समर्थन की कमी होती है, तो Django सभी टेबल -स्पेस-संबंधित विकल्पों की उपेक्षा करता है।