

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

# Lock:extend
<a name="apg-waits.lockextend"></a>

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.

**Topics**
+ [Versi mesin yang didukung](#apg-waits.lockextend.context.supported)
+ [Konteks](#apg-waits.lockextend.context)
+ [Kemungkinan penyebab peningkatan peristiwa tunggu](#apg-waits.lockextend.causes)
+ [Tindakan](#apg-waits.lockextend.actions)

## Versi mesin yang didukung
<a name="apg-waits.lockextend.context.supported"></a>

Informasi peristiwa tunggu ini didukung untuk semua versi Aurora PostgreSQL.

## Konteks
<a name="apg-waits.lockextend.context"></a>

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
<a name="apg-waits.lockextend.causes"></a>

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
<a name="apg-waits.lockextend.actions"></a>

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

**Topics**
+ [Mengurangi sisipan dan pembaruan bersamaan ke relasi yang sama](#apg-waits.lockextend.actions.action1)
+ [Meningkatkan bandwidth jaringan](#apg-waits.lockextend.actions.increase-network-bandwidth)

### Mengurangi sisipan dan pembaruan bersamaan ke relasi yang sama
<a name="apg-waits.lockextend.actions.action1"></a>

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\$1stat\$1statements](https://www.postgresql.org/docs/13/monitoring-stats.html#MONITORING-PG-STAT-ALL-TABLES-VIEW) 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\$1partman](PostgreSQL_Partitions.md).
+ 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](https://www.postgresql.org/docs/13/sql-createtable.html) 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
<a name="apg-waits.lockextend.actions.increase-network-bandwidth"></a>

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](Aurora.AuroraMonitoring.Metrics.md). Untuk informasi tentang performa jaringan untuk setiap kelas instans DB, lihat [Spesifikasi perangkat keras untuk kelas instans DB untuk Aurora](Concepts.DBInstanceClass.Summary.md).