saya sedang mengalami kegigihan Redis RDB. Saya memiliki keraguan mengenai kegigihan RDB terkait dengan kelemahannya.
Pemahaman Sejauh Ini:
Kita harus menggunakan persistensi rdb ketika kita perlu menyimpan snapshot dari kumpulan data yang saat ini ada di memori pada interval tertentu.
Saya dapat memahami bahwa dengan cara ini kami dapat kehilangan beberapa data jika server rusak. Tetapi kelemahan lain yang saya tidak mengerti adalah bagaimana fork dapat memakan waktu lama ketika mempertahankan kumpulan data besar menggunakan rdb.
Mengutip dari Dokumentasi
RDB perlu melakukan fork() sesering mungkin agar dapat bertahan di disk menggunakan proses anak. Fork() dapat memakan waktu jika kumpulan datanya besar, dan dapat menyebabkan Redis berhenti melayani klien selama beberapa milidetik atau bahkan satu detik jika kumpulan datanya sangat besar dan kinerja CPU tidak bagus. AOF juga perlu melakukan fork() tetapi Anda dapat menyesuaikan seberapa sering Anda ingin menulis ulang log tanpa mengorbankan daya tahan.
Saya tahu cara kerja fork sesuai pengetahuan saya. Ketika proses induk melakukan fork, ia membuat proses Anak baru dan kami dapat mengizinkan beberapa kode yang akan dieksekusi oleh proses anak berdasarkan pidnya atau kami dapat menyediakan beberapa executable baru yang akan berfungsi menggunakan exec( ) panggilan sistem.
Tetapi hal-hal yang saya tidak mengerti betapa beratnya tugas ketika ukuran kumpulan data lebih besar?
Saya rasa saya tahu jawabannya tetapi saya tidak yakin tentang itu
Dikutip dari tautan ini https://www.bottomupcs.com/fork_and_exec.xhtml
Ketika suatu proses memanggil fork, maka
sistem operasi akan membuat proses baru yang sama persis dengan proses induknya. Ini berarti semua status yang dibicarakan sebelumnya disalin, termasuk file yang terbuka, status register, dan semua alokasi memori, termasuk kode program.
Sesuai pernyataan di atas, seluruh kumpulan data redis akan disalin ke anak.
Apakah aku paham betul?