Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Optimalkan penggunaan layanan
Pertimbangan tingkat layanan mencakup jumlah beban kerja yang Anda jalankan per akun, kuota layanan tidak hanya untuk Athena, tetapi di seluruh layanan, dan pemikiran tentang cara mengurangi kesalahan 'kehabisan sumber daya'.
Topik
Jalankan satu beban kerja per akun untuk menghindari batas kuota layanan
Athena memberlakukan kuota untuk metrik seperti waktu berjalan kueri, jumlah kueri bersamaan dalam akun, dan tarif permintaan. API Untuk informasi lebih lanjut tentang kuota ini, lihatService Quotas. Melebihi kuota ini menyebabkan kueri gagal — baik saat dikirimkan, atau selama eksekusi kueri.
Banyak tips optimasi kinerja di halaman ini dapat membantu mengurangi waktu berjalan kueri. Optimalisasi membebaskan kapasitas sehingga Anda dapat menjalankan lebih banyak kueri dalam kuota konkurensi dan menjaga agar kueri tidak dibatalkan karena berjalan terlalu lama.
Kuota pada jumlah kueri dan API permintaan bersamaan adalah per dan. Akun AWS Wilayah AWS Kami merekomendasikan menjalankan satu beban kerja per Akun AWS (atau menggunakan reservasi kapasitas yang disediakan terpisah) agar beban kerja tidak bersaing untuk kuota yang sama.
Jika Anda menjalankan dua beban kerja di akun yang sama, salah satu beban kerja dapat menjalankan banyak kueri. Hal ini dapat menyebabkan beban kerja yang tersisa terhambat atau diblokir agar tidak menjalankan kueri. Untuk menghindari hal ini, Anda dapat memindahkan beban kerja ke akun terpisah untuk memberikan setiap beban kerja kuota konkurensi sendiri. Membuat reservasi kapasitas yang disediakan untuk salah satu atau kedua beban kerja mencapai tujuan yang sama.
Pertimbangkan kuota di layanan lain
Ketika Athena menjalankan kueri, ia dapat memanggil layanan lain yang memberlakukan kuota. Selama eksekusi kueri, Athena dapat melakukan API panggilan ke, Amazon S3 AWS Glue Data Catalog, dan layanan AWS lainnya seperti dan. IAM AWS KMS Jika Anda menggunakan kueri federasi, Athena juga menelepon. AWS Lambda Semua layanan ini memiliki batas dan kuota sendiri yang dapat dilampaui. Ketika eksekusi kueri menemukan kesalahan dari layanan ini, gagal dan menyertakan kesalahan dari layanan sumber. Kesalahan yang dapat dipulihkan dicoba ulang, tetapi kueri masih bisa gagal jika masalah tidak teratasi dengan sendirinya tepat waktu. Pastikan untuk membaca pesan kesalahan secara menyeluruh untuk menentukan apakah pesan tersebut berasal dari Athena atau dari layanan lain. Beberapa kesalahan yang relevan tercakup dalam bagian tuning kinerja ini.
Untuk informasi selengkapnya tentang mengatasi kesalahan yang disebabkan oleh kuota layanan Amazon S3, lihat Hindari memiliki terlalu banyak file nanti di dokumen ini. Untuk informasi selengkapnya tentang pengoptimalan kinerja Amazon S3, lihat Pola desain praktik terbaik: mengoptimalkan kinerja Amazon S3 di Panduan Pengguna Amazon S3.
Mengurangi kesalahan 'kehabisan sumber daya'
Athena menjalankan kueri di mesin kueri terdistribusi. Saat Anda mengirimkan kueri, perencana kueri mesin Athena memperkirakan kapasitas komputasi yang diperlukan untuk menjalankan kueri dan menyiapkan sekelompok node komputasi yang sesuai. Beberapa query seperti DDL query berjalan hanya pada satu node. Kueri kompleks pada kumpulan data besar berjalan pada cluster yang jauh lebih besar. Node seragam, dengan memori yang sama,CPU, dan konfigurasi disk. Athena meningkatkan, bukan meningkatkan, untuk memproses pertanyaan yang lebih menuntut.
Terkadang permintaan kueri melebihi sumber daya yang tersedia untuk cluster yang menjalankan kueri. Ketika ini terjadi, kueri gagal dengan kesalahan Sumber daya yang habis Kueri pada faktor skala ini
.
Sumber daya yang paling sering habis adalah memori, tetapi dalam kasus yang jarang terjadi juga bisa berupa ruang disk. Kesalahan memori biasanya terjadi ketika mesin melakukan fungsi gabungan atau jendela, tetapi mereka juga dapat terjadi dalam jumlah dan agregasi yang berbeda.
Bahkan jika kueri gagal dengan kesalahan 'kehabisan sumber daya' sekali, itu mungkin berhasil ketika Anda menjalankannya lagi. Eksekusi kueri tidak deterministik. Faktor-faktor seperti berapa lama waktu yang dibutuhkan untuk memuat data dan bagaimana dataset menengah didistribusikan melalui node dapat menghasilkan penggunaan sumber daya yang berbeda. Misalnya, bayangkan kueri yang menggabungkan dua tabel dan memiliki kemiringan berat dalam distribusi nilai untuk kondisi gabungan. Kueri semacam itu dapat berhasil sebagian besar waktu tetapi kadang-kadang gagal ketika nilai yang paling umum akhirnya diproses oleh node yang sama.
Untuk mencegah kueri Anda melebihi sumber daya yang tersedia, gunakan kiat penyetelan kinerja yang disebutkan dalam dokumen ini. Khususnya, untuk tips tentang cara mengoptimalkan kueri yang menghabiskan sumber daya yang tersedia, lihat Optimalkan bergabungKurangi ruang lingkup fungsi jendela, atau hapus, danOptimalkan kueri dengan menggunakan perkiraan.