A very inefficient method for determining one or two items, but a good solution for those who are working with PANDAS and Python and have many similar queries, is to download your SQL query to a Dataframe and then use Pandas' Rank and query tools - in 2 steps: Show
Step 1 - Run @GMB 's answer from above:
Step 2 - extract the Rank(s) you need from the Pandas dataframe:
As above, the dataframe now contains: Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris. Topik ini mencakup informasi tentang praktik terbaik dan opsi untuk menggunakan atau memigrasi data ke klaster DB Amazon Aurora MySQL. Informasi dalam topik ini merangkum dan mengulangi beberapa pedoman dan prosedur yang dapat Anda temukanMengelola klaster DB Amazon Aurora. Menentukan instans DB mana yang terhubung ke AndaUntuk menentukan instans DB mana di klaster DB Aurora MySQL koneksi terhubung, periksa variabel global
Klaster 0jika Anda terhubung ke instans DB penulis, seperti instance utama dalam klaster yang disediakan.Pendekatan ini dapat membantu jika Anda ingin menambahkan logika ke kode aplikasi Anda untuk menyeimbangkan beban kerja atau untuk memastikan bahwa operasi tulis menggunakan koneksi yang tepat. Teknik ini hanya berlaku untuk klaster Aurora menggunakan replikasi satu-master. Untuk klaster multi-master, semua instans DB memiliki pengaturan 1.Praktik terbaik untuk performa dan penskalaan Aurora MySQLAnda dapat menerapkan praktik terbaik berikut untuk meningkatkan kinerja dan skalabilitas cluster Aurora MySQL Anda. Menggunakan kelas instans T untuk pengembangan dan pengujianInstans MySQL Amazon Aurora yang menggunakan 2, 3, atau 4Kelas instans DB paling cocok untuk aplikasi yang tidak mendukung beban kerja yang tinggi untuk waktu yang lebih lama. Instans T dirancang untuk memberikan performa dasar yang moderat dan kemampuan untuk meningkatkan performa yang secara signifikan lebih tinggi sesuai dengan yang dibutuhkan beban kerja Anda. Tujuannya adalah untuk beban kerja yang tidak menggunakan CPU penuh secara sering atau konsisten, tetapi kadang-kadang perlu runtutan. Kami menyarankan hanya menggunakan kelas instans DB untuk server pengembangan dan pengujian, atau server non-produksi lainnya. Untuk rincian selengkapnya tentang kelas instans T, lihatInstance kinerja yang dapat melonjak.Jika klaster Aurora Anda lebih besar dari 40 TB, jangan gunakan kelas instans T. Ketika database Anda memiliki volume data yang besar, overhead memori untuk mengelola objek skema dapat melebihi kapasitas instance T. Jangan aktifkan Skema Kinerja MySQL pada instans Amazon Aurora MySQL T. Jika Skema Kinerja diaktifkan, instans dapat kehabisan memori. Jika database Anda terkadang menganggur tetapi di lain waktu memiliki beban kerja yang cukup besar, Anda dapat menggunakannyaAurora Serverless v2sebagai alternatif untuk contoh T. DenganAurora Serverless v2, Anda menentukan rentang kapasitas dan Aurora secara otomatis menskalakan database Anda naik atau turun tergantung pada beban kerja saat ini. Untuk rincian penggunaan, lihatMenggunakan Aurora Serverless v2. Untuk versi mesin database yang dapat Anda gunakanAurora Serverless v2, lihatPersyaratan untuk Aurora Serverless v2. Saat Anda menggunakan instans T sebagai instans DB di klaster DB Aurora MySQL, kami merekomendasikan hal berikut:
Mengoptimalkan kueri bergabung yang diindeks Amazon Aurora dengan prefetch kunci asinkronFitur prefetch (AKP) kunci asinkron tersedia untuk Amazon Aurora MySQL versi 1.15 dan lebih baru. Untuk informasi selengkapnya tentang versi Aurora MySQL, lihat Pembaruan engine basis data untuk Amazon Aurora MySQL. Amazon Aurora dapat menggunakan AKP untuk meningkatkan kinerja kueri yang menggabungkan tabel di seluruh indeks. Fitur ini meningkatkan kinerja dengan mengantisipasi baris yang diperlukan untuk menjalankan kueri di mana kueri JOIN memerlukan penggunaan fitur optimalisasi Batched Key Access (BKA) dan Multi-Range Read (MRR). Untuk informasi lebih lanjut tentang BKA dan MRR, lihat Nested-loop blok and join akses kunci batchdan Optimalisasi baca multi threaddalam dokumentasi MySQL. Untuk memanfaatkan fitur AKP, kueri harus menggunakan BKA dan MRR. Biasanya, kueri tersebut terjadi saat klausul JOIN dari queri menggunakan indeks sekunder, tetapi juga memerlukan beberapa kolom dari indeks primer. Misalnya, Anda dapat menggunakan AKP ketika klausul JOIN mewakili nilai indeks antara tabel luar kecil dan besar, dan indeks sangat selektif pada tabel yang lebih besar. AKP bekerja bersama dengan BKA dan MRR untuk melakukan pencarian indeks sekunder hingga utama selama evaluasi klausul JOIN. AKP mengidentifikasi baris yang diperlukan untuk menjalankan kueri selama evaluasi klausul JOIN. Kemudian menggunakan thread latar belakang untuk memuat halaman yang berisi baris tersebut ke dalam memori secara serempak sebelum menjalankan kueri. Mengaktifkan prefetch kunci asinkronAnda dapat mengaktifkan fitur AKP dengan mengatur 4, sebuah variabel server MySQL, ke 5. Secara default, nilai ini diatur ke 5. Namun, AKP tidak dapat diaktifkan sampai Anda juga mengaktifkan algoritma Gabung BKA dan menonaktifkan fungsionalitas MRR berbasis biaya. Untuk melakukannya, Anda harus menetapkan nilai berikut untuk 7, variabel server MySQL:
Saat ini, Anda dapat mengatur nilai ini hanya di tingkat sesi. Contoh berikut menggambarkan cara menetapkan nilai-nilai ini untuk mengaktifkan AKP untuk sesi saat ini dengan melaksanakan pernyataan SET.
Demikian pula, Anda dapat menggunakan pernyataan SET untuk menonaktifkan AKP dan algortima gabung BKA serta fungsi MRR berbasis biaya yang dapat diaktifkan ulang untuk sesi saat ini, seperti yang ditunjukkan dalam contoh berikut.
Untuk informasi selengkapnya tentang switch pengoptimal batched_key_access dan mrr_cost_based lihat Pengoptimalan yang dapat dialihkandalam dokumentasi MySQL. Mengoptimalkan kueri untuk prefetch kunci asinkronAnda dapat mengonfirmasi apakah queri dapat memanfaatkan fitur AKP. Untuk melakukannya, gunakan 4untuk memprofilkan kueri sebelum menjalankannya. Pernyataan 4 memberikan informasi tentang rencana pelaksanaan yang akan digunakan untuk kueri tertentu.Pada output pernyataan 4, kolom 7 menjelaskan informasi tambahan termasuk dengan rencana pelaksanaan. Jika fitur AKP berlaku pada tabel yang digunakan dalam pencarian, kolom ini mencakup salah satu nilai berikut:
Contoh berikut menunjukkan penggunaan 4untuk melihat rencana eksekusi untuk kueri yang dapat memanfaatkan AKP.
Untuk informasi lebih lanjut tentang 4Format output, lihatDiperpanjang EXPLAIN format outputdalam dokumentasi produk MySQL.Untuk versi MySQL 5.6—kompatibel dan versi yang kompatibel dengan 5.7 yang lebih lama, Anda menggunakan 4dengan 3kata kunci. Kata kunci ini telah usang di MySQL 5.7 dan 8.0.Untuk informasi lebih lanjut tentang 4Format output dalam MySQL 5.6, lihatDiperpanjang EXPLAIN format outputdalam dokumentasi produk MySQL.Mengoptimalkan besar Aurora MySQL bergabung kueri dengan hash bergabungAnda harus menggabungkan sejumlah besar data dengan menggunakan equijoin, hash join dapat meningkatkan kinerja kueri. Anda dapat mengaktifkan hash join untuk Aurora MySQL. Kolom hash join dapat berupa ekspresi rumit apa pun. Dalam kolom hash join, Anda dapat membandingkan jenis data dengan cara berikut:
Anda tidak dapat membandingkan tipe data dalam kategori yang berbeda. Batasan berikut berlaku bagi hash joins untuk Aurora MySQL:
Mengaktifkan hash joinUntuk mengaktifkan hash bergabung, mengatur variabel server MySQL 7kepada 2(Aurora MySQL versi 1 dan 2) atau 3(Aurora MySQL versi 3). Hash join diaktifkan secara default di Aurora MySQL versi 3. Optimasi ini dimatikan secara default di Aurora MySQL versi 1 dan 2. Contoh berikut menggambarkan cara mengaktifkan hash join. Anda dapat mengeluarkan pernyataan 4pertama untuk melihat apa pengaturan lain yang hadir di 5parameter string. Memperbarui satu pengaturan di 7parameter tidak menghapus atau memodifikasi pengaturan lainnya.
Untuk Aurora MySQL versi 3, dukungan hash join tersedia di semua versi minor dan diaktifkan secara default. Untuk Aurora MySQL versi 2, dukungan hash join tersedia dalam versi 2.06 dan lebih tinggi. Pada Aurora MySQL versi 2, fitur hash join selalu dikendalikan oleh nilai 7.Sebelum Aurora MySQL versi 1.22, cara mengaktifkan hash join di Aurora MySQL versi 1 adalah dengan mengaktifkan pengaturan tingkat sesi 8. Pada versi Aurora MySQL tersebut, pengaturan 7 untuk hash join diaktifkan secara default dan Anda hanya perlu mengaktifkan 8.Dengan pengaturan ini, optimalisasi memilih untuk menggunakan hash join berdasarkan biaya, karakteristik kueri, dan ketersediaan sumber daya. Jika estimasi biaya salah, Anda dapat memaksa optimalisasi untuk memilih hash join. Caranya adalah dengan mengatur 1, sebuah variabel server MySQL, ke 0. Contoh berikut mengilustrasikan cara memaksa pengoptimal untuk memilih hash join.
Pengaturan ini menimpa keputusan pengoptimal berbasis biaya. Meskipun pengaturan dapat berguna untuk pengujian dan pengembangan, kami menyarankan Anda untuk tidak menggunakannya dalam produksi. Mengoptimalkan kueri untuk hash joinUntuk mengetahui apakah queri dapat memanfaatkan hash join, gunakan pernyataan 4 untuk membuat profil kueri terlebih dahulu. Pernyataan 4 memberikan informasi tentang rencana pelaksanaan yang akan digunakan untuk kueri tertentu.Pada output pernyataan 4, kolom 7 menjelaskan informasi tambahan termasuk dengan rencana pelaksanaan. Jika hash join berlaku pada tabel yang digunakan dalam queri, kolom ini mencakup nilai yang mirip dengan berikut ini:
Contoh berikut menunjukkan penggunaan EXPLAIN untuk melihat rencana pelaksanaan untuk kueri hash join.
Dalam output, 9 adalah tabel yang digunakan untuk membangun tabel hash, dan innodb_read_only 0 adalah tabel yang digunakan untuk menyelidiki tabel hash.Untuk informasi lebih lanjut tentang format output 4 yang diperluas, lihat Format output Extended EXPLAINdalam dokumentasi produk MySQL.Di Aurora MySQL 2.08 dan yang lebih tinggi, Anda dapat menggunakan petunjuk SQL untuk memengaruhi apakah kueri menggunakan hash join atau tidak, dan tabel mana yang digunakan untuk sisi build dan probe join. Untuk detail, lihat . Penggunaan Amazon Aurora untuk mengukur pembacaan database MySQL AndaAnda dapat menggunakan Amazon Aurora dengan instans DB MySQL Anda untuk memanfaatkan kemampuan penskalaan baca Amazon Aurora dan memperluas beban kerja baca untuk instans DB MySQL Anda. Untuk menggunakan Aurora untuk menskala baca instans DB MySQL Anda, buat klaster DB Aurora MySQL dan buat menjadi replika baca dari instans DB MySQL Anda. Lalu hubungkan ke klaster Aurora MySQL untuk memproses kueri baca. Database sumber dapat berupa instans DB RDS for MySQL, atau sebuah database MySQL yang dijalankan secara eksternal pada Amazon RDS. Untuk informasi selengkapnya, lihat . Praktik terbaik untuk ketersediaan tinggi Aurora MySQLAnda dapat menerapkan praktik terbaik berikut untuk meningkatkan ketersediaan kluster MySQL Aurora Anda. Menggunakan Amazon Aurora untuk Pemulihan Bencana dengan database MySQL AndaAnda dapat menggunakan Amazon Aurora dengan instans DB MySQL Anda untuk membuat backup di luar lokasi untuk pemulihan bencana. Untuk menggunakan Aurora untuk pemulihan bencana instans DB MySQL Anda, buat klaster DB Amazon Aurora dan buat replika baca instans DB MySQL Anda. Ini berlaku untuk satu instans DB RDS for MySQL, atau sebuah database MySQL yang dijalankan secara eksternal pada Amazon RDS. Saat Anda mengatur replikasi di antara instans DB MySQL dan klaster DB Amazon Aurora MySQL, Anda harus memantau replikasi untuk memastikan agar tetap sehat dan perbaiki jika perlu. Untuk petunjuk tentang cara membuat klaster DB Amazon Aurora MySQL dan membuat menjadi replika baca dari instans DB MySQL Anda, ikuti prosedur dalam . Untuk informasi lebih lanjut tentang model pemulihan bencana, lihatBagaimana memilih opsi pemulihan bencana terbaik untuk klaster Amazon Aurora MySQL Anda. Bermigrasi dari MySQL ke Amazon Aurora MySQL dengan waktu henti yang berkurangSaat mengimpor data dari database MySQL yang mendukung aplikasi langsung ke klaster DB Amazon Aurora MySQL, Anda mungkin ingin mengurangi waktu gangguan layanan saat Anda bermigrasi. Untuk melakukannya, Anda dapat menggunakan prosedur yang didokumentasikan dalam Mengimpor data ke instans MySQL atau MariaDB DB dengan waktu henti yang berkurang dalam Panduan Pengguna Amazon Relational Database Service. Prosedur ini terutama dapat membantu jika Anda bekerja dengan basis data yang sangat besar. Anda dapat menggunakan prosedur untuk mengurangi biaya impor dengan meminimalkan jumlah data yang dilewatkan melalui jaringan ke AWS. Prosedur ini mencantumkan langkah-langkah untuk mentransfer salinan data database Anda ke instans Amazon EC2 dan mengimpor data ke RDS baru untuk instans DB MySQL. Karena Amazon Aurora kompatibel dengan MySQL, Anda dapat menggunakan klaster DB Amazon Aurora untuk instans DB MySQL Amazon RDS target. Menghindari kinerja lambat, restart otomatis, dan failover untuk instans Aurora MySQL DBJika Anda menjalankan beban kerja berat atau beban kerja yang melonjak melampaui sumber daya yang dialokasikan dari instans DB Anda, Anda dapat menghabiskan sumber daya tempat Anda menjalankan aplikasi dan database Aurora. Untuk mendapatkan metrik pada instans database Anda seperti pemanfaatan CPU, penggunaan memori, dan jumlah koneksi database yang digunakan, Anda dapat merujuk ke metrik yang disediakan oleh Amazon CloudWatch, Performance Insights, dan Pemantauan yang Ditingkatkan. Untuk informasi selengkapnya tentang pemantauan instans DB, lihatMetrik pemantauan di klaster Amazon Aurora. Jika beban kerja Anda menghabiskan sumber daya yang Anda gunakan, instans DB Anda mungkin melambat, memulai ulang, atau bahkan gagal ke instans DB lain. Untuk menghindari hal ini, pantau pemanfaatan sumber daya Anda, periksa beban kerja yang berjalan pada instans DB Anda, dan buat pengoptimalan jika diperlukan. Jika pengoptimalan tidak meningkatkan metrik instans dan mengurangi kelelahan sumber daya, pertimbangkan untuk meningkatkan instans DB Anda sebelum mencapai batasnya. Untuk informasi selengkapnya tentang kelas instans DB yang tersedia, lihatKelas contoh Aurora DB. Rekomendasi untuk fitur MySQLFitur berikut tersedia di Aurora MySQL untuk kompatibilitas MySQL. Namun, mereka memiliki masalah kinerja, skalabilitas, stabilitas, atau kompatibilitas di lingkungan Aurora. Oleh karena itu, kami menyarankan Anda mengikuti pedoman tertentu dalam penggunaan fitur-fitur ini. Misalnya, kami rekomendasikan agar Anda tidak menggunakan fitur tertentu untuk penerapan Aurora produksi. Menggunakan replikasi multithreaded di Aurora MySQL versi 3Secara default, Aurora menggunakan replikasi utas tunggal saat klaster DB Aurora MySQL digunakan sebagai replika baca untuk replikasi log biner. Meskipun Aurora MySQL tidak melarang replikasi multithreaded, fitur ini hanya didukung di Aurora MySQL versi 3 dan yang lebih tinggi. Aurora MySQL versi 1 dan 2 mewarisi beberapa masalah terkait replikasi multiutas dari MySQL. Untuk versi tersebut, kami rekomendasikan agar Anda tidak menggunakan replikasi multiutas dalam produksi. Jika Anda menggunakan replikasi multi thread, kami sarankan agar Anda menguji setiap penggunaan secara menyeluruh. Untuk informasi selengkapnya tentang replikasi di Amazon Aurora, lihat Replikasi dengan Amazon Aurora. Untuk informasi tentang replikasi multithreaded di Aurora MySQL versi 3, lihat. MemintaAWS Lambdafungsi menggunakan fungsi MySQL asliJika Anda menggunakan Amazon Aurora versi 1.16 atau lebih baru, kami menyarankan menggunakan fungsi MySQL asli Jika Anda menggunakan prosedur Untuk informasi selengkapnya tentang menjalankan fungsi Lambda dari Amazon Aurora, lihat Memanggil fungsi Lambda dari klaster DB Amazon Aurora MySQL. Menghindari transaksi XA dengan Amazon Aurora MySQLSebaiknya jangan gunakan transaksi eXtended Architecture (XA) dengan Aurora MySQL, karena dapat menyebabkan waktu pemulihan yang lama jika XA berada di status
Untuk informasi lebih lanjut tentang menggunakan transaksi XA dengan MySQL, lihat Transaksi XAdalam dokumentasi MySQL. Menjaga kunci asing dihidupkan selama pernyataan DML*Kami sangat menyarankan agar Anda tidak menjalankan pernyataan data definition language (DDL) saat variabel Jika Anda perlu menyisipkan atau memperbarui baris yang memerlukan pelanggaran sementara terhadap kunci asing, ikuti langkah-langkah beriku:
Selain itu, ikuti praktik terbaik lainnya untuk kendala kunci asing:
Mengkonfigurasi seberapa sering buffer log memerahDi MySQL Community Edition, untuk membuat transaksi tahan lama, buffer log InnoDB harus disiram ke penyimpanan yang tahan lama. Anda menggunakan Ketika Anda mengatur Perubahan Di Aurora MySQL, pemrosesan log ulang diturunkan ke lapisan penyimpanan, jadi tidak ada pembilasan untuk log file yang terjadi pada instans DB. Saat penulisan dikeluarkan, log ulang dikirim dari instans DB penulis langsung ke volume klaster Aurora. Satu-satunya menulis bahwa lintas jaringan adalah mengulang catatan log. Tidak ada halaman yang pernah ditulis dari tingkat database. Secara default, di Aurora MySQL, Aurora MySQL tidak menyiram log ke file data seperti MySQL Community Edition. Namun, Anda dapat menggunakan Meskipun kehilangan data dapat terjadi di MySQL Community Edition dan Aurora MySQL, perilaku berbeda di setiap database karena arsitekturnya yang berbeda. Perbedaan arsitektur ini dapat menyebabkan berbagai tingkat kehilangan data. Untuk memastikan bahwa database Anda sesuai dengan ACID, selalu atur Anda tidak dapat mengonfigurasi |