更新时间:2024-09-11 GMT+08:00
分享

修改GaussDB(for MySQL)代理的Multi-Statements处理模式

当通过数据库代理执行Multi-Statements时,可以根据业务场景选择不同的处理模式,当前处理模式支持Strict、Loose和Parse,默认Strict模式。

  • Strict模式(默认)

    Multi-Statements会发往主节点,当前连接的后续请求读写分离失效,会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。

    该模式不会解析Multi-Statements,性能好,适合短连接、无连接复用场景。

  • Loose模式

    Multi-Statements会发往主节点,当前连接的后续请求依旧可以读写分离。

    该模式不会解析Multi-Statements,性能好,适合Multi-Statements内仅含DML SQL,不含设置session变量、创建临时表、创建存储过程、执行未提交事务等操作的场景。

  • Parse模式

    该模式下,Multi-Statements会发往主节点,同时数据库代理会解析Multi-Statements,根据Multi-Statements内包含的SQL情况,决定当前连接的后续请求是否恢复读写分离。详细内容请参见Parse模式场景说明

    由于该模式会解析Multi-Statements,对代理性能有一定影响,影响程度与Multi-Statements的长度和复杂性相关,建议Multi-Statements小于100MB,避免数据库代理解析SQL消耗过多的资源,引起性能明显下降。

使用须知

  • 如需通过管理控制台设置Multi-Statements处理模式,请联系客服申请开通该功能。
  • 更改Multi-Statements模式立即生效,无需重启数据库代理。但如果模式切换前存在由于执行了Multi-Statements导致读写分离失效的连接,不会因为切换模式而恢复读写分离,需要断开重连才能恢复。
  • Parse模式场景说明:
    当Multi-Statements包含如下场景时,后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。
    • Multi-Statements内创建临时表。
    • Multi-Statements内创建存储过程。
    • Multi-Statements内含未提交的事务(如执行了begin,但未执行commit或rollback)。
    • Multi-Statements过于复杂或含特殊语法等导致Multi-Statements解析失败。

操作步骤

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 在页面左上角单击,选择数据库 > 云数据库 GaussDB(for MySQL)
  4. “实例管理”页面,选择目标实例,单击实例名称,进入GaussDB(for MySQL)实例概览页面。
  5. 在左侧导航栏,单击“数据库代理”,选择目标代理实例。
  6. 单击代理实例名称,进入代理实例基本信息页面。
  7. 在左侧导航栏中选择“参数修改”,进入参数信息页面。
  8. 选择“multiStatementType”,设置多语句处理方式。

    图1 设置多语句处理方式

    支持如下模式:Strict、Loose、Parse。

  9. 修改完成后单击“保存”,在弹出框中单击“是”,保存修改。

相关文档