Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan rencana Aurora DSQL EXPLAIN
Aurora DSQL menggunakan struktur rencana EXPLAIN yang mirip dengan PostgreSQL, tetapi dengan tambahan kunci yang mencerminkan arsitektur terdistribusi dan model eksekusi.
Dalam dokumentasi ini, kami akan memberikan ikhtisar rencana Aurora DSQL EXPLAIN, menyoroti persamaan dan perbedaan dibandingkan dengan PostgreSQL. Kami akan membahas berbagai jenis operasi pemindaian yang tersedia di Aurora DSQL dan membantu Anda memahami biaya menjalankan kueri Anda.
PostgreSQL VS Aurora DSQL MENJELASKAN rencana
Aurora DSQL dibangun di atas database PostgreSQL dan berbagi sebagian besar struktur rencana dengan PostgreSQL, tetapi memiliki perbedaan arsitektur utama yang mempengaruhi eksekusi kueri dan pengoptimalan:
| Fitur | PostgreSQL | Aurora DSQL |
|---|---|---|
|
Penyimpanan Data |
Penyimpanan Tumpukan |
Tidak ada tumpukan, semua baris diindeks oleh pengenal unik |
|
Kunci Utama |
Indeks kunci utama terpisah dari data tabel |
Indeks kunci utama adalah tabel dengan semua kolom tambahan sebagai kolom INCLUDE |
|
Indeks Sekunder |
Indeks sekunder standar |
Bekerja sama seperti PostgreSQL, dengan kemampuan untuk menyertakan kolom non-kunci |
|
Kemampuan Penyaringan |
Kondisi Indeks, Filter Heap |
Kondisi Indeks, Filter Penyimpanan, Filter Prosesor Kueri |
|
Jenis Pindai |
Pemindaian Berurutan, Pemindaian Indeks, Pemindaian Indeks Saja |
Pemindaian Penuh, Pemindaian Indeks Hanya, Pemindaian Indeks |
|
Eksekusi Kueri |
Lokal ke Database |
Terdistribusi (komputasi dan penyimpanan terpisah) |
Aurora DSQL menyimpan data tabel secara langsung dalam urutan kunci primer daripada di tumpukan terpisah. Setiap baris diidentifikasi oleh kunci unik, biasanya kunci utama, yang memungkinkan database untuk mengoptimalkan pencarian dengan lebih efisien. Perbedaan arsitektur menjelaskan mengapa Aurora DSQL sering menggunakan Indeks Only Scan dalam kasus di mana PostgreSQL mungkin memilih pemindaian berurutan.
Perbedaan utama lainnya adalah bahwa Aurora DSQL memisahkan komputasi dari penyimpanan, memungkinkan filter diterapkan lebih awal di jalur eksekusi untuk mengurangi pergerakan data dan meningkatkan kinerja.
Untuk lebih lanjut menggunakan paket EXPLAIN dengan PostgreSQL, lihat dokumentasi PostgreSQL EXPLAIN.
Elemen kunci dalam rencana Aurora DSQL EXPLAIN
Paket Aurora DSQL EXPLAIN memberikan informasi terperinci tentang bagaimana kueri dijalankan, termasuk di mana pemfilteran terjadi dan kolom mana yang diambil dari penyimpanan. Memahami output ini membantu Anda mengoptimalkan kinerja kueri.
- Indeks Cond
Kondisi yang digunakan untuk menavigasi indeks. Penyaringan paling efisien yang mengurangi data yang dipindai. Di Aurora DSQL, kondisi indeks dapat diterapkan pada beberapa lapisan rencana eksekusi.
- Proyeksi
Kolom diambil dari penyimpanan. Lebih sedikit proyeksi berarti kinerja yang lebih baik.
- Filter Penyimpanan
Kondisi diterapkan pada tingkat penyimpanan. Lebih efisien daripada filter prosesor query.
- Filter Prosesor Kueri
-
Kondisi diterapkan pada tingkat prosesor query. Memerlukan transfer semua data sebelum penyaringan, yang menghasilkan pergerakan data dan biaya pemrosesan yang lebih tinggi.
Filter dalam Aurora DSQL
Aurora DSQL memisahkan komputasi dari penyimpanan, yang berarti bahwa titik di mana filter diterapkan selama eksekusi kueri memiliki dampak signifikan pada kinerja. Filter yang diterapkan sebelum volume besar data ditransfer mengurangi latensi dan meningkatkan efisiensi. Semakin dini filter diterapkan, semakin sedikit data yang perlu diproses, dipindahkan, dan dipindai, menghasilkan kueri yang lebih cepat.
Aurora DSQL dapat menerapkan filter pada beberapa tahap di jalur kueri. Memahami tahapan ini adalah kunci untuk menafsirkan rencana kueri dan mengoptimalkan kinerja.
| Tingkat | Jenis Filter | Deskripsi |
|---|---|---|
| 1 | Kondisi Indeks |
Diterapkan saat memindai indeks. Membatasi berapa banyak data yang dibaca dari penyimpanan dan mengurangi data yang dikirim ke lapisan komputasi. |
| 2 | Filter Penyimpanan | Diterapkan setelah data dibaca dari penyimpanan tetapi sebelum dikirim ke komputasi. Contoh di sini adalah filter pada kolom include dari indeks. Mengurangi transfer data tetapi tidak jumlah yang dibaca. |
| 3 | Filter Prosesor Kueri | Diterapkan setelah data mencapai lapisan komputasi. Semua data harus ditransfer terlebih dahulu, yang meningkatkan latensi dan biaya. Saat ini, Aurora DSQL tidak dapat melakukan semua operasi penyaringan dan proyeksi pada penyimpanan, sehingga beberapa kueri mungkin dipaksa untuk kembali ke jenis pemfilteran ini. |