

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

# io/redo\$1log\$1flush
<a name="ams-waits.io-redologflush"></a>

Peristiwa `io/redo_log_flush` terjadi ketika sesi menulis data persisten ke penyimpanan Amazon Aurora.

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

## Versi mesin yang didukung
<a name="ams-waits.io-redologflush.context.supported"></a>

Informasi peristiwa tunggu ini didukung untuk versi mesin berikut:
+ Aurora MySQL versi 3

## Konteks
<a name="ams-waits.io-redologflush.context"></a>

`io/redo_log_flush`Acara ini untuk operasi tulis input/output (I/O) di Aurora MySQL.

**catatan**  
Di Aurora MySQL versi 2, peristiwa tunggu ini disebut [io/aurora\$1redo\$1log\$1flush](ams-waits.io-auredologflush.md).

## Kemungkinan penyebab peningkatan peristiwa tunggu
<a name="ams-waits.io-redologflush.causes"></a>

Untuk persistensi data, commit memerlukan penulisan durabel ke penyimpanan yang stabil. Jika database melakukan terlalu banyak komit, ada acara tunggu pada I/O operasi tulis, acara `io/redo_log_flush` tunggu.

Untuk contoh perilaku peristiwa tunggu ini, lihat [io/aurora\$1redo\$1log\$1flush](ams-waits.io-auredologflush.md).

## Tindakan
<a name="ams-waits.io-redologflush.actions"></a>

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

**Topics**
+ [Mengidentifikasi sesi dan kueri yang bermasalah](#ams-waits.io-redologflush.actions.identify-queries)
+ [Mengelompokkan operasi tulis](#ams-waits.io-redologflush.actions.action0)
+ [Menonaktifkan autocommit](#ams-waits.io-redologflush.actions.action1)
+ [Menggunakan transaksi](#ams-waits.io-redologflush.action2)
+ [Menggunakan batch](#ams-waits.io-redologflush.action3)

### Mengidentifikasi sesi dan kueri yang bermasalah
<a name="ams-waits.io-redologflush.actions.identify-queries"></a>

Jika instans DB Anda mengalami kemacetan, langkah pertama adalah menemukan sesi dan kueri yang menjadi penyebabnya. Untuk posting Blog AWS Database yang berguna, lihat [Menganalisis Beban Kerja MySQL Amazon Aurora](https://aws.amazon.com/blogs/database/analyze-amazon-aurora-mysql-workloads-with-performance-insights/) dengan Performance Insights.

**Untuk mengidentifikasi sesi dan kueri yang menyebabkan kemacetan:**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Wawasan Performa**.

1. Pilih instans DB Anda.

1. Di **Beban basis data**, pilih **Potong berdasarkan masa tunggu**.

1. Di bagian bawah halaman, pilih **SQL Teratas**.

   Kueri di bagian atas daftar adalah penyebab beban tertinggi pada basis data.

### Mengelompokkan operasi tulis
<a name="ams-waits.io-redologflush.actions.action0"></a>

Contoh berikut memicu peristiwa tunggu `io/redo_log_flush`. (Autocommit diaktifkan.)

```
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');
....
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');

UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE id=xx;
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE id=xx;
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE id=xx;
....
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE id=xx;

DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
....
DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
```

Dalam upaya mengurangi waktu yang dihabiskan untuk menunggu peristiwa tunggu `io/redo_log_flush`, kelompokkan operasi tulis secara logis ke dalam satu commit guna mengurangi panggilan persisten ke penyimpanan.

### Menonaktifkan autocommit
<a name="ams-waits.io-redologflush.actions.action1"></a>

Nonaktifkan autocommit sebelum membuat perubahan besar yang tidak ada dalam transaksi, seperti yang ditunjukkan pada contoh berikut.

```
SET SESSION AUTOCOMMIT=OFF;
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE sampleCol1=xx;
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE sampleCol1=xx;
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE sampleCol1=xx;
....
UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE sampleCol1=xx;
-- Other DML statements here
COMMIT;

SET SESSION AUTOCOMMIT=ON;
```

### Menggunakan transaksi
<a name="ams-waits.io-redologflush.action2"></a>

Anda dapat menggunakan transaksi, seperti yang ditunjukkan pada contoh berikut.

```
BEGIN
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');
....
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES ('xxxx','xxxxx');

DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;
....
DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1=xx;

-- Other DML statements here
END
```

### Menggunakan batch
<a name="ams-waits.io-redologflush.action3"></a>

Anda dapat membuat perubahan dalam batch, seperti yang ditunjukkan pada contoh berikut. Namun, menggunakan batch yang terlalu besar dapat menyebabkan masalah kinerja, terutama pada replika baca atau saat melakukan point-in-time pemulihan (PITR).

```
INSERT INTO `sampleDB`.`sampleTable` (sampleCol2, sampleCol3) VALUES
('xxxx','xxxxx'),('xxxx','xxxxx'),...,('xxxx','xxxxx'),('xxxx','xxxxx');

UPDATE `sampleDB`.`sampleTable` SET sampleCol3='xxxxx' WHERE sampleCol1 BETWEEN xx AND xxx;

DELETE FROM `sampleDB`.`sampleTable` WHERE sampleCol1<xx;
```