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

SQL सर्वर (T-SQL) में किसी तालिका के भीतर एक विशिष्ट विभाजन को संपीड़ित करें

जब आप SQL सर्वर में विभाजित तालिका को संपीड़ित करते हैं, तो आप सभी विभाजनों, कुछ या केवल एक विभाजन को संपीड़ित कर सकते हैं।

ऐसा करने के लिए, REBUILD PARTITION का उपयोग करें ALTER TABLE . के भीतर सिंटैक्स बयान।

ऐसा करते समय, आप केवल निर्दिष्ट विभाजन या सभी विभाजनों का पुनर्निर्माण कर सकते हैं। वैकल्पिक रूप से, आप केवल एक विशिष्ट विभाजन या विभाजन की सूची को संपीड़ित करते हुए सभी विभाजनों का पुनर्निर्माण कर सकते हैं।

उदाहरण 1 - एक विभाजन का पुनर्निर्माण करें

इस पहले उदाहरण में, हम तालिका में केवल एक विभाजन का पुनर्निर्माण और संपीड़ित करते हैं।

संपीड़न बचत का अनुमान लगाएं

कल्पना कीजिए कि हम Movies . नामक तालिका में एक विभाजन को संपीड़ित करना चाहते हैं ।

सबसे पहले, हम sp_estimate_data_compression_savings . का उपयोग कर सकते हैं तालिका को संपीड़ित करने से हमें होने वाली बचत का अनुमान लगाने के लिए सिस्टम संग्रहीत प्रक्रिया।

EXEC sp_estimate_data_compression_savings 
    @schema_name = 'dbo', 
    @object_name = 'Movies', 
    @index_id = NULL, 
    @partition_number = 3, 
    @data_compression = 'ROW';

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

object_name                                        | Movies
schema_name                                        | dbo
index_id                                           | 1
partition_number                                   | 3
size_with_current_compression_setting(KB)          | 120
size_with_requested_compression_setting(KB)        | 88
sample_size_with_current_compression_setting(KB)   | 128
sample_size_with_requested_compression_setting(KB) | 96

sp_estimate_data_compression_savings . के अनुसार , एक बार जब हम इसे संकुचित कर लेते हैं, तो विभाजन का आकार 120 केबी से कम होकर 88 केबी हो जाना चाहिए।

विभाजन को संपीड़ित करें

चलिए आगे बढ़ते हैं और इसे कंप्रेस करते हैं।

ALTER TABLE Movies
REBUILD PARTITION = 3 WITH (DATA_COMPRESSION = ROW);

इस मामले में मैंने पंक्ति संपीड़न का उपयोग किया।

संपीड़न बचत सत्यापित करें

अब, अगर हम sp_estimate_data_compression_savings . को क्वेरी करते हैं फिर से, हम देखेंगे कि वर्तमान आकार अब ठीक वैसा ही है जैसा पहले अनुमान लगाया गया था (88 KB)।

EXEC sp_estimate_data_compression_savings 
    @schema_name = 'dbo', 
    @object_name = 'Movies', 
    @index_id = NULL, 
    @partition_number = 3, 
    @data_compression = 'NONE';

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

object_name                                        | Movies
schema_name                                        | dbo
index_id                                           | 1
partition_number                                   | 3
size_with_current_compression_setting(KB)          | 88
size_with_requested_compression_setting(KB)        | 112
sample_size_with_current_compression_setting(KB)   | 96
sample_size_with_requested_compression_setting(KB) | 128

इस उदाहरण में, अगर मुझे संपीड़न को हटाना है (यानी इसे NONE पर सेट करना है, तो मुझे स्थान की आवश्यकताओं का अनुमान मिल रहा है। )।

सत्यापित करें कि कौन से विभाजन संपीड़न का उपयोग करते हैं

हम sys.partitions . का भी उपयोग कर सकते हैं यह सत्यापित करने के लिए देखें कि विभाजन में संपीड़न है।

SELECT
    [partition_number],
    [data_compression],
    [data_compression_desc]
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');

परिणाम:

+--------------------+--------------------+-------------------------+
| partition_number   | data_compression   | data_compression_desc   |
|--------------------+--------------------+-------------------------|
| 1                  | 0                  | NONE                    |
| 2                  | 0                  | NONE                    |
| 4                  | 0                  | NONE                    |
| 3                  | 1                  | ROW                     |
+--------------------+--------------------+-------------------------+

संपीड़न हटाएं

उदाहरण 2 पर जाने से पहले, आइए विभाजन से संपीड़न को हटा दें।

ALTER TABLE Movies
REBUILD PARTITION = 3 WITH (DATA_COMPRESSION = NONE);

उदाहरण 2 - एकाधिक विभाजनों को संपीड़ित करें

इस उदाहरण में, हम सभी विभाजनों का पुनर्निर्माण करते हैं, लेकिन केवल उन विभाजनों को निर्दिष्ट करते हैं जिन्हें हम संपीड़ित करना चाहते हैं।

यह हमारे पहले उदाहरण का एक वैकल्पिक तरीका है। इस सिंटैक्स का उपयोग करके, हम संपीड़ित करने के लिए विभाजन की एक सूची निर्दिष्ट कर सकते हैं।

ALTER TABLE Movies
REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = ROW ON PARTITIONS(2,3));

इस मामले में मैंने सभी विभाजनों का पुनर्निर्माण किया, लेकिन मैंने केवल 2 और 3 विभाजनों को संकुचित किया।

फिर से, हम sys.partitions . का उपयोग कर सकते हैं सत्यापित करने के लिए कि वे संकुचित थे।

SELECT
    [partition_number],
    [data_compression],
    [data_compression_desc]
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');

परिणाम:

+--------------------+--------------------+-------------------------+
| partition_number   | data_compression   | data_compression_desc   |
|--------------------+--------------------+-------------------------|
| 1                  | 0                  | NONE                    |
| 2                  | 1                  | ROW                     |
| 3                  | 1                  | ROW                     |
| 4                  | 0                  | NONE                    |
+--------------------+--------------------+-------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में वास्तविक एक-से-एक संबंध कैसे बनाएं

  2. SQL सर्वर नेटवर्क इंटरफेस:कनेक्शन स्ट्रिंग मान्य नहीं है [87]

  3. SQL सर्वर अद्यतन डेटाबेस आँकड़ा

  4. SQL सर्वर डेटाबेस मेल (T-SQL) से भेजे गए ईमेल की सूची लौटाएं

  5. SQL सर्वर में प्रोग्रामेटिक रूप से डेटाबेस बनाना