Saya memiliki sejumlah besar data model cuaca yang dimasukkan ke dalam database PostgreSQL. Mesin ini memiliki 8 core dan 16 GB RAM. Saya menjalankan PostgreSQL 9.3 dengan PostGIS 2.1. Setiap tabel akan memiliki berbagai data cuaca (suhu, titik embun, angin, dll.). Setiap tabel akan memiliki 6-7 kolom: lintang, bujur, geometri titik, ketinggian, tanggal-waktu model yang relevan untuk, dan 1-2 nilai data yang menarik. Data terutama akan ditanyakan untuk kotak pembatas oleh waktu dan ketinggian. Akan ada sekitar 145.757.360 baris per tabel (data yang lebih tua dari sekarang tidak lagi relevan akan dihapus). Saya kira-kira memperkirakan ukuran tabel sekitar 10 GB masing-masing tanpa indeks. (Itu 52 byte data ditambah 23 byte overhead per baris). Data akan diperbarui secara berkala / dimasukkan saat data model baru tersedia. catatan:
Jadi saya melihat dua rencana ini:
- Cukup indeks dan cluster berdasarkan (datetime, elevasi) dengan indeks tambahan untuk geometri titik. Jalankan pekerjaan cron biasa yang menghapus baris lama, jalankan vakum / analisis, dan klaster ulang.
- Partisi berdasarkan datetime dan kemudian cluster dan indeks dengan ketinggian per tabel dengan indeks pada geometri. Jalankan pekerjaan cron reguler untuk menambahkan tabel baru ke depan dan menjatuhkan tabel lama.
Lebih lanjut,
- Jadi, saya tahu bahwa menjatuhkan meja jauh lebih efisien dan menghapus dan menyedot debu. Tetapi apakah saya akan melihat peningkatan kinerja sebaliknya?
- Apakah partisi sesuai ketika semua tabel akan diperbarui dan dipilih secara merata sampai dihapus sebagai tidak relevan (dokumentasi menunjukkan bahwa partisi bekerja paling baik ketika hanya sedikit dari mereka yang akan dipilih)?
Ketika mengirimkan data, apakah pilihan akan lebih cepat dari indeks yang dikelompokkan? Apakah jawabannya berubah jika beberapa permintaan dilakukan sekaligus?
Terima kasih. Saya harap saya memasang semua data yang dibutuhkan. Jika tidak beri tahu saya dan saya akan menambahkannya.
xmin
atauxmax
, dll. Ada fitur yang mungkin membuatnya menjadi 9,4 yang mungkin akan membuat Anda bersemangat, yang disebut indeks minmax, yang akan membuat hal-hal seperti ini jauh lebih nyaman.Jawaban:
Semua hal dipertimbangkan, saya akan pergi dengan opsi 2. Tanggal akan dipilih secara merata, tetapi saya akan menebak bahwa untuk permintaan yang diberikan hanya satu atau dua partisi tanggal yang akan terlibat. Sayang sekali Anda tidak dapat mengelompokkan pada geolokasi dan partisi pada tanggal, yang akan ideal. Ketinggian cenderung berkorelasi dengan geolokasi, jika kotak pembatas cukup kecil.
Mengingat pilihan yang tersedia, operasi data yang lebih bersih dan menghindari kekosongan harian adalah hal yang baik untuk dimiliki.
Mengirimkan pilihan mungkin lebih cepat dengan opsi 1, meskipun saya curiga itu mungkin mencuci. Dengan opsi 1, catatan dengan tanggal dan ketinggian yang sama ditempatkan berdekatan satu sama lain dalam satu indeks cluster besar. Dengan opsi 2, catatan dengan tanggal dan ketinggian yang sama ditempatkan berdekatan satu sama lain dalam banyak indeks cluster yang lebih kecil.
sumber