Lock:extend - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Lock:extend

Peristiwa Lock:extend terjadi saat suatu proses backend sedang menunggu untuk mengunci relasi agar dapat diperluas, sementara proses lain mengunci relasi tersebut untuk tujuan yang sama.

Versi mesin yang didukung

Informasi peristiwa tunggu ini didukung untuk semua versi Aurora PostgreSQL.

Konteks

Peristiwa Lock:extend menunjukkan bahwa suatu proses backend sedang menunggu untuk memperluas relasi yang dikunci oleh proses backend lain saat relasi tersebut diperluas. Karena hanya satu proses pada satu waktu yang dapat memperluas relasi, sistem membuat peristiwa tunggu Lock:extend. Operasi INSERT, COPY, dan UPDATE dapat membuat peristiwa ini.

Kemungkinan penyebab peningkatan peristiwa tunggu

Saat peristiwa Lock:extend muncul lebih dari biasanya, yang mungkin menunjukkan adanya masalah performa, berikut adalah penyebab umumnya:

Lonjakan sisipan atau pembaruan bersamaan ke tabel yang sama

Mungkin terdapat peningkatan jumlah sesi bersamaan dengan kueri yang disisipkan ke atau memperbarui tabel yang sama.

Bandwidth jaringan tidak cukup

Bandwidth jaringan pada instans DB mungkin tidak cukup untuk kebutuhan komunikasi penyimpanan dari beban kerja saat ini. Hal ini dapat berkontribusi pada latensi penyimpanan yang menyebabkan peningkatan peristiwa Lock:extend.

Tindakan

Kami merekomendasikan berbagai tindakan, tergantung pada penyebab peristiwa tunggu Anda.

Mengurangi sisipan dan pembaruan bersamaan ke relasi yang sama

Pertama, ketahui apakah terdapat peningkatan pada metrik tup_inserted dan tup_updated dengan disertai peningkatan pada peristiwa tunggu ini. Jika demikian, periksa relasi yang memiliki pertentangan tinggi untuk operasi penyisipan dan pembaruan. Untuk menentukan hal ini, buat kueri tampilan pg_stat_all_tables untuk nilai pada bidang n_tup_ins dan n_tup_upd. Untuk informasi tentang tampilan pg_stat_all_tables, lihat pg_stat_statements pada dokumentasi PostgreSQL.

Untuk mendapatkan informasi selengkapnya tentang pemblokiran dan kueri yang diblokir, buat kueri pg_stat_activity seperti contoh berikut:

SELECT blocked.pid, blocked.usename, blocked.query, blocking.pid AS blocking_id, blocking.query AS blocking_query, blocking.wait_event AS blocking_wait_event, blocking.wait_event_type AS blocking_wait_event_type FROM pg_stat_activity AS blocked JOIN pg_stat_activity AS blocking ON blocking.pid = ANY(pg_blocking_pids(blocked.pid)) where blocked.wait_event = 'extend' and blocked.wait_event_type = 'Lock'; pid | usename | query | blocking_id | blocking_query | blocking_wait_event | blocking_wait_event_type ------+----------+------------------------------+-------------+------------------------------------------------------------------+---------------------+-------------------------- 7143 | myuser | insert into tab1 values (1); | 4600 | INSERT INTO tab1 (a) SELECT s FROM generate_series(1,1000000) s; | DataFileExtend | IO

Setelah Anda mengidentifikasi relasi yang berkontribusi untuk meningkatkan peristiwa Lock:extend, gunakan teknik berikut untuk mengurangi pertentangan:

  • Cari tahu apakah Anda dapat menggunakan partisi untuk mengurangi pertentangan pada tabel yang sama. Memisahkan tuple yang disisipkan atau diperbarui ke dalam partisi yang berbeda dapat mengurangi pertentangan. Untuk informasi tentang partisi, lihat Mengelola partisi PostgreSQL dengan ekstensi pg_partman.

  • Jika peristiwa tunggu terutama disebabkan oleh aktivitas pembaruan, pertimbangkan untuk mengurangi nilai faktor isi relasi. Ini dapat mengurangi permintaan untuk blok baru selama pembaruan. Faktor isi adalah parameter penyimpanan untuk tabel yang menentukan jumlah maksimum ruang untuk mengemas halaman tabel. Ini dinyatakan sebagai persentase dari total ruang untuk sebuah halaman. Untuk informasi selengkapnya tentang parameter faktor isi, lihat BUAT TABEL pada dokumentasi PostgreSQL.

    penting

    Kami sangat merekomendasikan untuk menguji sistem jika Anda mengubah faktor isi karena mengubah nilai ini dapat berdampak negatif pada performa, tergantung pada beban kerja Anda.

Meningkatkan bandwidth jaringan

Untuk melihat apakah terdapat peningkatan latensi tulis, periksa metrik WriteLatency di CloudWatch. Jika ada, gunakan metrik WriteThroughput dan ReadThroughput Amazon CloudWatch untuk memantau lalu lintas terkait penyimpanan pada klaster DB. Metrik ini dapat membantu Anda menentukan apakah bandwidth jaringan cukup untuk aktivitas penyimpanan beban kerja Anda.

Jika tidak cukup, tingkatkan bandwidth jaringan Anda. Jika instans DB Anda mencapai batas bandwidth jaringan, satu-satunya cara untuk meningkatkan bandwidth adalah meningkatkan ukuran instans DB Anda.

Untuk informasi selengkapnya tentang melihat metrik CloudWatch, lihat CloudWatch Metrik Amazon untuk Amazon Aurora. Untuk informasi tentang performa jaringan untuk setiap kelas instans DB, lihat Spesifikasi perangkat keras kelas instans DB untuk Aurora.