# SQL関連のモジュールの読み書き

![`smart`](ModulesSupportSQLOperations_aa_002_20220509.png)

-----------------------------------------------------------
TiDB SQL 実行フローの単元で詳しく紹介しますが、SQLの読み書きプロセスについてはここで簡単に関連モジュールの役割を説明します。

`Executor`モジュール
- `Compiler` が生成した実行計画の後、`Executor` が計画を実行します。

`DistSQL`モジュール
- `DistSQL`モジュールは、TiDBサーバーとコプロセッサーの間のアブストラクションレイヤーです。それは、低レベルのコプロセッサーリクエストをカプセル化します。トップレベルのSQL文には、テーブル結合やサブクエリなどの複雑なオペレーターを含む場合がありますが、複数のテーブルを操作する場合でも、`DistSQL`は単一のテーブルのデータのみを扱います。`DistSQL`リクエストは、複数のRegionを操作することができます。

`TiKV Client`モジュール
- TiKV に読み書きのリクエストを送信するのが主な責任です。最初のタイプはRaw KVリクエストで、主キーインデックスやユニークインデックスに基づく等価なクエリなど、単一の行のデータを取得するための簡単なリクエストです。2番目のタイプはコプロセッサーリクエストで、TiKV コプロセッサーフレームワークにフィルタリング、集計、またはカラム投影などの計算もプッシュダウンする必要があります。

`Transaction`モジュール
- このモジュールでは、トランザクションの処理が主に行われます。それには、2フェーズコミット、トランザクションの悲観的ロック、楽観的ロック管理などが含まれます。

`KV`モジュール
- TiKVへのすべてのトランザクション関連のリクエストは、このKVモジュールによって行われます。例えば、`KV Get`と`Batch Get`です。

`PD Client`モジュール
- このモジュールは、PD関連のリクエストを処理するのに責任があります。
