
# MySQL到LakeFormation参数调优
#### 源端优化
MySQL抽取优化。
可通过在作业任务配置参数单击中"添加自定义属性"来新增MySQL同步参数。
图1添加自定义属性   
![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002096006468.png "点击放大")
可使用的调优参数具体如下：
表1全量阶段优化参数 
| 参数名                                     | 类型      | 默认值    | 说明                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| scan.incremental.snapshot.backfill.skip | boolean | true   | 全量阶段是否跳过读取Binlog数据，默认为true。跳过读取Binlog数据可以有效降低内存使用。需要注意的是，跳过读取Binlog功能只提供at-least-once保证。                                                                                                                                                                                                                                                            |
| scan.incremental.snapshot.chunk.size    | int     | 50000  | 分片大小，决定了全量阶段单个分片最大数据的数据条数以及分片个数。分片大小越大，单个分片数据条数越多，分片个数越小。 当表的条数过多时，作业会划分较多的分片，从而占用过多的内存导致内存问题，请根据表的条数适当调整该值。 当scan.incremental.snapshot.backfill.skip为false时，实时处理集成作业会缓存单个分片的数据，此时分片越大，占用内存越多，引发内存溢出，在此场景下，可以考虑降低分片大小。 |
| scan.snapshot.fetch.size                | int     | 1024   | 全量阶段抽取数据时，从Mysql侧单次请求抽取数据的最大条数，适当增加请求条数可以减少对Mysql的请求次数提升性能。                                                                                                                                                                                                                                                                                         |
| debezium.max.queue.size                 | int     | 8192   | 数据缓存队列条数，默认为8192，当源表中单条数据过大时（如1MB），缓存过多数据会导致内存溢出，可以考虑减小该值。                                                                                                                                                                                                                                                                                          |
| debezium.max.queue.size.in.bytes        | int     | 0      | 数据缓存队列大小，默认为0，即表示缓存队列不考虑数据大小，只按照数据条数计算。在debezium.max.queue.size无法有效限制内存占用时，考虑显式设置该值来限制缓存数据的大小。                                                                                                                                                                                                                                                      |
| jdbc.properties.socketTimeout           | int     | 300000 | 全量阶段连接Mysql的socket超时时间，默认为5分钟。当Mysql负载较高，作业出现SocketTimeout异常时，考虑增大该值。                                                                                                                                                                                                                                                                               |
| jdbc.properties.connectTimeout          | int     | 60000  | 全量阶段连接Mysql的连接超时时间，默认为1分钟。当Mysql负载较高，作业出现ConnectTimeout异常时，考虑增大该值。                                                                                                                                                                                                                                                                                  |
   
表2增量阶段优化参数 
| 参数名                              | 类型  | 默认值  | 说明                                                                                             |
|:---|:---|:---|:---|
| debezium.max.queue.size          | int | 8192 | 数据缓存队列条数，默认为8192，当源表中单条数据过大时（如1MB），缓存过多数据会导致内存溢出，可以考虑减小该值。                                     |
| debezium.max.queue.size.in.bytes | int | 0    | 数据缓存队列大小，默认为0，即表示缓存队列不考虑数据大小，只按照数据条数计算。在debezium.max.queue.size无法有效限制内存占用时，考虑显式设置该值来限制缓存数据的大小。 |
   
#### 目的端优化
LakeFormation写入优化。
您可以在LakeFormation的目的端表配置中修改写入相关配置，并通过单击高级配置中的"查看配置"来添加表属性配置。
图2添加表属性   
![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002593658597.png "点击放大")
