Apakah operasi penulisan serialisasi pergeseran merah?

Kami menjalankan cluster node 5 dc1.large dan mengalami masalah dalam menskalakan pemuatan data kami.

Masing-masing "loader" merupakan proses terpisah yang: - menjalankan perintah COPY dari S3 ke dalam staging table - kemudian dilakukan penghapusan pada live table (untuk menghapus baris-baris yang ada di staging table) - terakhir data staging disisipkan ke dalam tabel utama

Di atas pada dasarnya adalah teknik yang direkomendasikan di doc:

Detail penting yang perlu diperhatikan adalah bahwa setiap loader beroperasi pada kumpulan tabel yang terpisah (yaitu tidak ada pertentangan kunci antar loader karena mereka beroperasi pada kumpulan data pelanggan yang berbeda) Jadi loader yang satu akan menyalin ke tabel L1_Staging dan akhirnya ke tabel L1_main, loader dua akan disalin ke L2_staging dan akhirnya ke tabel L2_main dll.

Apa yang kami perhatikan adalah ketika beberapa loader berjalan secara paralel, waktu kerja meningkat seolah-olah pergeseran merah membuat serialisasi semua operasi penulisan. Sekali lagi, tidak ada pertentangan kunci.

Mengapa kita melihat pola ini? Apakah pergeseran merah tidak menangani penulisan paralel dengan baik?


person maxTrialfire    schedule 26.11.2015    source sumber
comment
Apakah mungkin penulisan menggunakan bandwidth yang tersedia untuk penyimpanan? Jika kueri terikat I/O, maka thread tambahan tidak akan berjalan lebih cepat.   -  person Gordon Linoff    schedule 26.11.2015
comment
Kuerinya pasti terikat i/o, ini adalah penyisipan besar diikuti dengan penghapusan diikuti dengan penyisipan lainnya. Redshift adalah kotak hitam jadi saya tidak begitu tahu berapa banyak throughput IO yang saya gunakan untuk setiap kueri.   -  person maxTrialfire    schedule 26.11.2015


Jawaban (2)


Ya, redshift memang membuat serialisasi semua operasi. Semuanya diantrekan di antrean WLM (manajemen beban kerja).

person maxTrialfire    schedule 07.06.2016

Anda akan mendapatkan kinerja yang lebih baik jika Anda dapat memisahkan setiap memuat ke dalam sejumlah file yang merupakan kelipatan node (5 dalam kasus Anda). Dengan satu file Anda dibatasi pada throughput satu node.

Akan sangat membantu jika menggunakan manifes file dengan banyak file yang dimuat. Kompres juga file Anda dan aktifkan kompresi pada kolom tabel Anda. Kompresi tabel menambahkan komputasi tetapi data kemudian dapat dipindahkan antar node dengan lebih cepat jika perlu dipindahkan (node ​​beban tidak sama dengan node saat istirahat).

Karena Anda melakukan operasi penghapusan yang sering dan berat, Anda perlu menjadwalkan reguler vacuum operasi pada tabel yang terpengaruh.

Kueri (termasuk salinan) dapat dijalankan secara bersamaan tetapi jumlah simultannya dibatasi oleh sumber daya (defaultnya adalah 5 per node). Itu bisa diubah sedikit. Jadi, Anda harus dapat memuat tabel yang berbeda secara efisien. Seperti yang ditunjukkan di atas, masalahnya mungkin lebih berkaitan dengan memuat satu file. Lihat info di antrean kueri.

Berikut beberapa petunjuk lainnya.

person systemjack    schedule 22.06.2016