# Batch Size

+ 一个 Chunk 包含多行数据，SQL 语句执行时，执行器以 Chunk 为单位来执行获取数据、表达式求值和 JOIN 等操作，当结果集较大时，更大的 Chunk size 可以提升性能，如果结果集很小，小于 Chunk size，申请过大 chunk 的内存会造成性能的损失。

![center](./student-guide/diagram/06-batch-size-01-01.png)
-------------------------------------------------------------
Batch Size

- 一个 Chunk 包含多行数据，SQL 语句执行时，执行器以 Chunk 为单位来执行获取数据、表达式求值和 JOIN 等操作，当结果集较大时，更大的 Chunk size 可以提升性能，如果结果集很小，小于 Chunk size，申请过大 chunk 的内存会造成性能的损失

- tidb_init_chunk_size/tidb_max_chunk_size
  - 一个算子执行时，第一次创建 tidb_init_chunk_size 的 chunk，当结果集比初始的 chunk size 大的时候，下次执行的时候会对 chunk 扩容，增加 chunk size 的大小，如果结果集仍然超过 chunk size，会再一次扩容，直到达到 tidb_max_chunk_size 设置的上限

- tidb_index_join_batch_size
  - 控制 index join 算子一个批次处理的数据量大小，设置更大 size 可能会提升性能，代价是消耗更多内存
