Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kueri paralel untuk Amazon Aurora My SQL
Topik ini menjelaskan optimasi kinerja kueri paralel untuk Amazon Aurora My SQL -Compatible Edition. Fitur ini menggunakan jalur pemrosesan khusus untuk kueri tertentu yang sarat data, dengan memanfaatkan arsitektur penyimpanan bersama Aurora. Kueri paralel bekerja paling baik dengan cluster Aurora My SQL DB yang memiliki tabel dengan jutaan baris dan kueri analitik yang membutuhkan waktu beberapa menit atau jam untuk diselesaikan.
Topik
- Ikhtisar query paralel untuk Aurora My SQL
- Membuat cluster DB query paralel di Aurora My SQL
- Menghidupkan dan menonaktifkan kueri paralel di Aurora My SQL
- Mengoptimalkan query paralel di Aurora My SQL
- Memverifikasi pernyataan mana yang menggunakan query paralel untuk Aurora My SQL
- Memantau query paralel untuk Aurora My SQL
- SQLkonstruksi untuk kueri paralel di Aurora My SQL
Ikhtisar query paralel untuk Aurora My SQL
Aurora My SQL parallel query adalah optimasi yang memparalelkan beberapa I/O dan komputasi yang terlibat dalam pemrosesan kueri intensif data. Pekerjaan yang diparalelkan mencakup pengambilan baris dari penyimpanan, ekstraksi nilai kolom, dan penentuan baris yang cocok dengan ketentuan dalam klausa WHERE
dan klausa sambungan. Pekerjaan sarat data ini didelegasikan (dalam istilah pengoptimalan basis data, ditekan) ke beberapa simpul di lapisan penyimpanan terdistribusi Aurora. Tanpa query paralel, setiap kueri membawa semua data yang dipindai ke satu node dalam cluster Aurora SQL My (node kepala) dan melakukan semua pemrosesan kueri di sana.
Tip
Mesin SQL database Postgre juga memiliki fitur yang disebut “query paralel.” Fitur tersebut tidak terkait dengan kueri paralel Aurora.
Ketika fitur query paralel diaktifkan, SQL mesin Aurora Saya secara otomatis menentukan kapan kueri dapat memperoleh manfaat, tanpa memerlukan SQL perubahan seperti petunjuk atau atribut tabel. Pada bagian berikut, Anda dapat menemukan penjelasan tentang kapan kueri paralel diterapkan pada kueri. Anda juga dapat menemukan cara memastikan bahwa kueri paralel diterapkan di tempat yang memberi banyak keuntungan.
catatan
Pengoptimalan kueri paralel sangat menguntungkan bagi kueri yang berlangsung lama yang memerlukan waktu beberapa menit atau jam untuk diselesaikan. Aurora My SQL umumnya tidak melakukan optimasi query parallel untuk query murah. Aurora juga umumnya tidak melakukan pengoptimalan kueri paralel jika teknik pengoptimalan lain lebih masuk akal, seperti query caching, buffer pool caching, atau pencarian indeks. Jika Anda mendapati kueri paralel tidak digunakan seperti yang Anda harapkan, lihat Memverifikasi pernyataan mana yang menggunakan query paralel untuk Aurora My SQL.
Manfaat
Dengan query paralel, Anda dapat menjalankan kueri analitik intensif data pada tabel Aurora My. SQL Dalam banyak kasus, Anda bisa mendapatkan peningkatan order-of-magnitude kinerja atas pembagian kerja tradisional untuk pemrosesan kueri.
Manfaat kueri paralel antara lain:
-
Meningkatkan performa I/O, karena paralelisasi permintaan baca fisik di beberapa simpul penyimpanan.
-
Mengurangi lalu lintas jaringan. Aurora tidak mengirim keseluruhan halaman data dari simpul penyimpanan ke simpul kepala lalu memfilter baris dan kolom yang tidak diperlukan sesudahnya. Sebaliknya, Aurora mengirim urutan ringkas yang hanya berisi nilai kolom yang diperlukan untuk set hasil.
-
Mengurangi CPU penggunaan pada node kepala, karena menekan pemrosesan fungsi, pemfilteran baris, dan proyeksi kolom untuk klausa.
WHERE
-
Menurunkan tekanan memori pada pool buffer. Halaman yang diproses oleh kueri paralel tidak ditambahkan ke dalam pool buffer. Pendekatan ini mengurangi peluang pemindaian sarat data mengosongkan data yang sering digunakan dari pool buffer.
-
Berpotensi mengurangi duplikasi data dalam pipeline ekstrak, transformasi, load (ETL) Anda, dengan membuatnya praktis untuk melakukan kueri analitik yang berjalan lama pada data yang ada.
Arsitektur
Fitur query paralel menggunakan prinsip arsitektur utama Aurora MySQL: memisahkan mesin database dari subsistem penyimpanan, dan mengurangi lalu lintas jaringan dengan merampingkan protokol komunikasi. Aurora My SQL menggunakan teknik ini untuk mempercepat operasi intensif penulisan seperti pemrosesan redo log. Kueri paralel menerapkan prinsip yang sama untuk operasi baca.
catatan
Arsitektur Aurora My SQL parallel query berbeda dari fitur bernama serupa di sistem database lainnya. Aurora My SQL parallel query tidak melibatkan symmetric multiprocessing (SMP) sehingga tidak bergantung pada CPU kapasitas server database. Pemrosesan paralel terjadi di lapisan penyimpanan, terlepas dari Aurora My SQL server yang berfungsi sebagai koordinator kueri.
Secara default, tanpa kueri paralel, pemrosesan untuk kueri Aurora mencakup pengiriman data mentah ke satu simpul di dalam klaster Aurora (simpul kepala). Aurora kemudian melakukan semua pemrosesan lebih lanjut untuk kueri tersebut di dalam thread tunggal pada simpul tunggal tersebut. Dengan query paralel, sebagian besar pekerjaan intensif I/O dan CPU -intensif ini didelegasikan ke node di lapisan penyimpanan. Hanya baris ringkas set hasil yang dikirim kembali ke simpul kepala, dengan baris yang sudah difilter, dan nilai kolom sudah diekstraksi dan ditransformasikan. Manfaat kinerja berasal dari pengurangan lalu lintas jaringan, pengurangan CPU penggunaan pada node kepala, dan paralelisasi I/O di seluruh node penyimpanan. Jumlah I/O paralel, pemfilteran, dan proyeksi tidak berhubungan dengan jumlah instans DB dalam klaster Aurora yang menjalankan kueri.
Prasyarat
Untuk menggunakan semua fitur query paralel memerlukan cluster Aurora My SQL DB yang menjalankan versi 2.09 atau lebih tinggi. Jika Anda sudah memiliki klaster yang ingin Anda gunakan dengan kueri paralel, Anda dapat meningkatkannya ke versi yang kompatibel dan mengaktifkan kueri paralel sesudahnya. Dalam hal ini, pastikan untuk mengikuti prosedur peningkatan dalam Pertimbangan peningkatan untuk kueri paralel karena nama pengaturan konfigurasi dan nilai default berbeda di versi yang lebih baru ini.
Instans DB dalam klaster Anda harus menggunakan kelas instans db.r*
.
Pastikan bahwa pengoptimalan hash join diaktifkan untuk klaster Anda. Untuk mempelajari caranya, lihat Mengaktifkan hash join untuk klaster kueri paralel.
Untuk menyesuaikan parameter seperti aurora_parallel_query
dan aurora_disable_hash_join
, Anda harus memiliki grup parameter kustom yang Anda gunakan untuk klaster Anda. Anda dapat menentukan parameter ini secara terpisah untuk setiap instans DB menggunakan grup parameter DB. Namun, kami menyarankan Anda untuk menetapkannya dalam grup parameter klaster DB. Dengan demikian, semua instans DB di klaster Anda menerima pengaturan yang sama untuk parameter ini.
Pembatasan
Batasan berikut berlaku untuk fitur kueri paralel:
-
Kueri paralel tidak didukung dengan konfigurasi penyimpanan klaster DB Aurora I/O-Optimized.
-
Anda tidak dapat menggunakan kueri paralel dengan kelas instans db.t2 atau db.t3. Batasan ini berlaku bahkan jika Anda meminta kueri paralel menggunakan variabel session
aurora_pq_force
. -
Kueri paralel tidak berlaku pada tabel yang menggunakan format baris
COMPRESSED
atauREDUNDANT
. Gunakan format barisCOMPACT
atauDYNAMIC
untuk tabel yang akan Anda gunakan dengan kueri paralel. -
Aurora menggunakan algoritma berbasis biaya untuk menentukan apakah akan menggunakan mekanisme query paralel untuk setiap pernyataan. SQL Menggunakan SQL konstruksi tertentu dalam pernyataan dapat mencegah query paralel atau membuat query paralel tidak mungkin untuk pernyataan itu. Untuk informasi tentang kompatibilitas SQL konstruksi dengan query paralel, lihatSQLkonstruksi untuk kueri paralel di Aurora My SQL.
-
Setiap instans DB Aurora dapat menjalankan sesi kueri paralel hanya dalam jumlah tertentu pada satu waktu. Jika kueri memiliki beberapa bagian yang menggunakan kueri paralel, seperti subkueri, sambungan, atau operator
UNION
, fase-fase tersebut berjalan secara berurutan. Pernyataan ini hanya dihitung sebagai satu sesi kueri paralel pada satu waktu. Anda dapat memantau jumlah sesi aktif menggunakan variabel status kueri paralel. Anda dapat memeriksa batas sesi serentak untuk instans DB tertentu dengan melakukan kueri variabel statusAurora_pq_max_concurrent_requests
. -
Kueri paralel tersedia di semua AWS Wilayah yang didukung Aurora. Untuk sebagian besar AWS Wilayah, minimum Aurora My SQL version yang diperlukan untuk menggunakan query paralel adalah 2.09.
-
Kueri paralel dirancang untuk meningkatkan performa kueri sarat data. Ini tidak dirancang untuk kueri ringan.
-
Kami menyarankan Anda menggunakan node pembaca untuk SELECT pernyataan, terutama yang intensif data.
Biaya I/O dengan kueri paralel
Jika SQL klaster Aurora Saya menggunakan kueri paralel, Anda mungkin melihat peningkatan VolumeReadIOPS
nilai. Kueri paralel tidak menggunakan kumpulan buffer. Jadi, meskipun kueri cepat, pemrosesan yang dioptimalkan ini dapat menghasilkan peningkatan operasi baca dan biaya terkait.
Biaya I/O kueri paralel untuk kueri Anda diukur pada lapisan penyimpanan, dan akan sama atau lebih besar dengan saat kueri paralel diaktifkan. Anda akan mendapat manfaat berupa peningkatan performa kueri. Ada dua alasan untuk biaya I/O yang berpotensi lebih tinggi dengan kueri paralel:
-
Bahkan jika beberapa data dalam tabel berada di pool buffer, kueri paralel mengharuskan semua data dipindai di lapisan penyimpanan, sehingga menimbulkan biaya I/O.
-
Menjalankan kueri paralel tidak menyiapkan pool buffer. Akibatnya, menjalankan kueri paralel yang sama secara berurutan menimbulkan biaya I/O penuh.