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

postgresql विभाजन तालिका हटाएं

पोस्टग्रेएसक्यूएल में टेबल विभाजन को कैसे हटाया जाए, इसकी तलाश में यहां समाप्त होने वाले किसी भी व्यक्ति के लिए, यहां आधुनिक उत्तर है।

समाधान DELETE कथन का उपयोग नहीं करना है क्योंकि यह डेटा को रखने वाले संबंधित तालिका विभाजन को छोड़े बिना डेटा को हटा देगा। ओपी ने विभाजन तालिकाओं के प्रबंधन के बारे में पूछा, रिकॉर्ड को हटाने के बारे में नहीं, इसलिए DELETE कथनों का उपयोग करने वाला कोई भी समाधान रिकॉर्ड हटाने के अनावश्यक डेटाबेस ओवरहेड जोड़ता है, खाली विभाजन तालिका छोड़ देता है, और विभाजन का उपयोग करने के प्राथमिक लाभों में से एक को पूरी तरह से अनदेखा करता है; तालिका को तब गिराना जब वह उपयोगी न हो।

इस मामले में समाधान अब आवश्यक विभाजन तालिका को DROP करने के लिए होना चाहिए। मैंने अपने उत्पादन वातावरण में इस समस्या को हल करने के लिए एक समाधान लिखा है, इसका उत्तर है यहां

ओपी के मुद्दे को हल करने के लिए, मेरे द्वारा लिखे गए फ़ंक्शन का उपयोग fullTablename को संशोधित करने के लिए दो मामूली संशोधनों के साथ किया जा सकता है। परिवर्तनीय और दिनांक प्रारूप। fullTablename वेरिएबल लाइन को

. से बदला जाना चाहिए
fullTablename := base_table_name || '_' || to_char(startTime, dateFormat);

इस तरह YYYY-MM-DD_log प्रारूप में

fullTablename := to_char(startTime, dateFormat) || '_' || base_table_name;

फिर दिनांक प्रारूप को

. से थोड़ा संशोधित करने की आवश्यकता है
WHEN partition_plan='day'   THEN 'YYYYDDD'

घोषित तालिका नामकरण सम्मेलन के लिए

WHEN partition_plan='day'   THEN 'YYYY-MM-DD'

फिर SQL क्वेरी जो क्लीनअप करने के लिए फ़ंक्शन को कॉल करती है उसे इस तरह की दैनिक रखरखाव स्क्रिप्ट से कॉल किया जा सकता है:

SELECT public.drop_partitions(current_date-180, 'public', 'log', 5, 'day');

जो YYYY-MM-DD_log टेबल को DROP कर देगा जो कि 5 . हैं 180 . से पुराने दिन दिन पहले। दर्जनों या सैकड़ों पुराने टेबल पार्टिशन को हटाने के लिए आरंभिक रन के लिए, 5 वांछित प्रभाव को प्राप्त करने वाले बहुत अधिक मूल्य पर सेट किया जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका के माध्यम से पुनरावृति करें, प्रत्येक पंक्ति पर गणना करें

  2. Django का उपयोग करके पंक्तियों का प्रति घंटा समूहीकरण

  3. नया असाइन किया गया अनुक्रम काम नहीं कर रहा है

  4. पांडा से डेटाबेस में मौजूदा पंक्ति अद्यतन करें df

  5. PostgreSQL के लिए सर्वश्रेष्ठ DBaaS समाधान