
# 开启TaurusDB代理的事务拆分功能
#### 操作场景
默认情况下，云数据库 TaurusDB数据库代理会将事务内的所有请求都发送到主节点以保障事务的正确性，但是某些框架会将所有请求封装到非自动提交的事务中（通过set autocommit=0;关闭自动提交），导致主节点负载过大。
数据库代理提供了事务拆分的功能，能够将事务内写操作之前的读请求转发到只读节点，降低主节点负载。
事务拆分功能**默认关闭**。开启事务拆分后，当云数据库 TaurusDB关闭自动提交后，仅会在发生写操作时才正式开启事务，正式开启事务前的读请求会根据路由规则分发至对应节点。
#### 原理介绍
- 未开启事务拆分 未开启事务拆分时，事务中的所有请求均会路由到主节点以保障事务读写一致性。
  ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002349793914.png "点击放大")
  
- 开启事务拆分 开启事务拆分后，代理会将事务中第一个写操作之前的读请求分发到只读节点，从而减轻主节点的负载。
  ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002383314585.png "点击放大")
  
 
#### 使用须知
- 设置事务拆分需要满足数据库代理内核版本为2.3.9.5及以上。内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。
- 仅"READ-UNCOMMITTED"和"READ-COMMITTED"级别支持事务拆分。
- 仅读写模式的数据库代理支持事务拆分功能。
- 当事务拆分功能开启后，仅支持将事务隔离级别修改为"READ-UNCOMMITTED"或"READ-COMMITTED"，若需要将事务隔离级别修改至更高的级别，需要关闭事务拆分功能。
- 开启事务拆分后，使用BEGIN提交事务后的读请求暂时不支持拆分到只读库。
 
#### 操作步骤
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例概览页面。
4. 在左侧导航栏，单击"数据库代理"。
5. 在"数据库代理"页面，选择目标代理实例，单击代理实例名称。
6. 在"基本信息"页面，单击"事务拆分"后的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000001882731584.png)。
7. 在弹框中单击"确定"，开启事务拆分。 
   - 开启事务拆分功能后，如需关闭，可单击![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002383474273.png)，关闭事务拆分。
   
   - 开启或关闭事务拆分后仅对新连接生效。
   
   
   
   
8. 在代理实例的基本信息页面查看事务拆分是否开启。
 
#### 相关API
- [设置事务拆分](https://support.huaweicloud.com/api-taurusdb/UpdateTransactionSplitStatus.html)
- [查询数据库代理信息列表](https://support.huaweicloud.com/api-taurusdb/ShowGaussMySqlProxyList.html)
- [查询数据库代理规格信息](https://support.huaweicloud.com/api-taurusdb/ShowGaussMySqlProxyFlavors.html)
- [关闭数据库代理](https://support.huaweicloud.com/api-taurusdb/DeleteGaussMySqlProxy.html)
 
