
# 修改TaurusDB代理的Multi-Statements处理模式
#### 操作场景
当通过数据库代理[执行Multi-Statements](https://dev.mysql.com/doc/c-api/8.0/en/c-api-multiple-queries.html)时，可以根据业务场景选择不同的处理模式，当前处理模式支持Strict、Loose和Parse，默认Strict模式。
#### Multi-Statements处理模式说明
表1Multi-Statements处理模式说明 
| 模式           | 含义                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|
| Strict模式（默认） | Multi-Statements会发往主节点，当前连接的后续请求读写分离失效，会全部路由到主节点，需断开当前连接并重新连接才能恢复读写分离。 该模式不会解析Multi-Statements，性能好，适合短连接、无连接复用场景。                                                                                                                                                                                                                         |
| Loose模式      | Multi-Statements会发往主节点，当前连接的后续请求依旧可以读写分离。 该模式不会解析Multi-Statements，性能好，适合Multi-Statements内仅含DML SQL，不含设置session变量、创建临时表、创建存储过程、执行未提交事务等操作的场景。                                                                                                                                                                                             |
| Parse模式      | 该模式下，只读Multi-Statements会根据权重路由，读写混合Multi-Statements会发往主节点，同时数据库代理会解析Multi-Statements，根据Multi-Statements内包含的SQL情况，决定当前连接的后续请求是否恢复读写分离。详细内容请参见[Parse模式场景说明]。 由于该模式会解析Multi-Statements，对代理性能有一定影响，影响程度与Multi-Statements的长度和复杂性相关，建议Multi-Statements小于100MB，避免数据库代理解析SQL消耗过多的资源，引起性能明显下降。 |
   
#### 使用须知
更改Multi-Statements模式立即生效，无需重启数据库代理。但如果模式切换前存在由于执行了Multi-Statements导致读写分离失效的连接，该连接不会因为切换模式而恢复读写分离，需要断开重连才能恢复。
 #### Parse模式场景说明
当Multi-Statements包含如下场景时，后续请求会全部路由到主节点，需断开当前连接并重新连接才能恢复读写分离。
- Multi-Statements内创建临时表。
- Multi-Statements内创建存储过程。
- Multi-Statements内含未提交的事务（如执行了begin，但未执行commit或rollback）。
- Multi-Statements过于复杂或含特殊语法等导致Multi-Statements解析失败。
 
#### 设置Multi-Statements处理模式
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入TaurusDB实例概览页面。
4. 在左侧导航栏，单击"数据库代理"，选择目标代理实例。
5. 单击代理实例名称，进入代理实例基本信息页面。
6. 在左侧导航栏中选择"参数修改"，进入参数信息页面。
7. 选择"multiStatementType"，设置多语句处理方式。 
   支持模式：Strict、Loose、Parse。
   图1设置多语句处理方式   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002541540023.png "点击放大")
   
   
   
8. 修改完成后单击"保存"，在弹框中单击"确定"，保存修改。
 
