

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

# io/redo\_log\_flush
<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 write input/output (I/O) di Aurora MySQL.

**catatan**  
Di Aurora MySQL versi 2, acara tunggu ini diberi nama. [io/aurora\_redo\_log\_flush](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\_redo\_log\_flush](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 performa, terutama pada replika baca atau saat melakukan pemulihan titik waktu (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;
```