PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgresql menghapus tabel partisi

Bagi siapa saja yang berakhir di sini mencari cara menghapus partisi tabel di PostgreSQL, inilah jawaban modernnya.

Solusinya adalah tidak menggunakan pernyataan DELETE karena itu akan menghapus data tanpa menghapus partisi tabel terkait yang menyimpan data. OP bertanya tentang mengelola tabel partisi, bukan menghapus catatan, jadi solusi apa pun yang menggunakan pernyataan DELETE menambahkan overhead database yang tidak perlu untuk menghapus catatan, membiarkan tabel partisi kosong di tempatnya, dan sepenuhnya mengabaikan salah satu manfaat utama menggunakan partisi; MENJAUHKAN tabel ketika tidak lagi berguna.

Dalam hal ini solusinya harus DROP tabel partisi yang tidak lagi diperlukan. Saya telah menulis solusi untuk mengatasi masalah ini di lingkungan produksi saya, jawabannya adalah di sini .

Untuk mengatasi masalah OP, fungsi yang saya tulis dapat digunakan dengan dua revisi kecil untuk mengubah fullTablename variabel dan format tanggal. Baris variabel fullTablename harus diubah dari

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

ke format YYYY-MM-DD_log seperti ini

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

Maka format tanggal perlu sedikit diubah dari

WHEN partition_plan='day'   THEN 'YYYYDDD'

ke konvensi penamaan tabel yang dinyatakan

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

Kemudian kueri SQL yang memanggil fungsi untuk melakukan pembersihan dapat dipanggil dari skrip pemeliharaan harian seperti ini:

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

Yang akan MENGHAPUS tabel YYYY-MM-DD_log yang 5 hari lebih tua dari 180 beberapa hari yang lalu. Untuk menjalankan awal untuk menghapus lusinan atau ratusan partisi tabel lama, 5 dapat diatur ke nilai yang jauh lebih tinggi untuk mencapai efek yang diinginkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal PL/Ruby di PostgreSQL 9.3

  2. Parameter konfigurasi work_mem di PostgreSQL di Linux

  3. DENGARKAN/BERITAHU pgconnection turun java?

  4. Permintaan rekursif postgres dengan row_to_json

  5. Indeks gabungan dengan tiga kunci, apa yang terjadi jika saya meminta melewatkan yang tengah?