# 書き込みの実行 - 続き

![`smart`](ExecuteandWrite02_aa_005_20220512.png)

-----------------------------------------------------------
TiKVサーバーが変更されたRegionに関与している場合、書き込み操作を受け取ると、書き込みプロセスを開始します。このプロセスは主に`Scheduler`のスレッドプールモジュール、Raftstore、Applyから構成されています。プロセスの流れは以下の通りです：

1. `Scheduler`モジュールは、トランザクションの同時書き込みを調整し、受信した変更操作をプッシュダウンする責任があります。キーバリューの書き込み競合（ロック競合、バージョン競合など）が発生した場合、`Scheduler`はラッチを使用して調整し、ラッチを取得したスレッドはRaftstoreモジュールに書き込みリクエストを送信し、ラッチを取得しなかったスレッドは待機状態になります。

2. Raftstoreモジュールが書き込みリクエストを受け取った後、それはRaft Logに変換され、RocksDB Raftに書き込まれます。これは、これらのRaft Logsを永続化する責任を持つものです。同時に、Raftstoreモジュールは、書き込まれたRegionのレプリカを含む他のTiKVにRaft Logsをレプリケートし、他のRegionレプリカに書き込む準備をします。

3. RocksDB RaftがRaft Logをストアすることにより、ApplyモジュールはこれらのRaft LogsをRocksDB KVに適用し、その時点で書き込み操作がRocksDB KVに永続化されます。

まとめると、`Scheduler`が変更操作を制御し、Raftstoreモジュールに書き込み、Raft Logに変換され、レプリカを含む他のTiKVサーバーのRocksDB Raftインスタンスに書き込まれ、最後にApplyモジュールによってRocksDB KVインスタンスに永続化されます。


