Apache ShardingSphere 属性配置详解

Apache ShardingSphere 属性配置详解

shardingsphere Distributed SQL transaction & query engine for data sharding, scaling, encryption, and more - on any database. shardingsphere 项目地址: https://gitcode.com/gh_mirrors/sh/shardingsphere

什么是属性配置

在分布式数据库中间件 Apache ShardingSphere 中,属性配置(Props)是一组用于控制系统行为的全局参数。这些参数不直接涉及具体的分片规则或数据源配置,而是影响整个 ShardingSphere 运行时的表现和特性。

属性配置的核心作用

属性配置主要控制以下几个方面:

  1. SQL日志输出:控制SQL语句及其执行细节的日志记录
  2. 执行引擎行为:调节查询执行时的线程池和连接管理
  3. 元数据校验:管理表结构元数据的校验机制

详细参数解析

SQL日志相关配置

sql-show
  • 类型:布尔值

  • 默认值:false

  • 作用:是否在日志中输出SQL执行详情

  • 详细说明: 当设置为true时,ShardingSphere会在日志中记录完整的SQL执行信息,包括:

    • 逻辑SQL(应用程序发送的原始SQL)
    • 实际SQL(路由后真正执行到各数据库节点的SQL)
    • SQL解析结果(SQL的抽象语法树分析结果)

    这些日志使用专门的日志主题"ShardingSphere-SQL",日志级别为INFO,非常适合开发调试阶段使用。

sql-simple
  • 类型:布尔值
  • 默认值:false
  • 作用:控制SQL日志的输出格式
  • 详细说明: 当与sql-show配合使用时,此参数决定日志的显示风格:
    • false(默认):输出详细格式,包含完整上下文信息
    • true:输出简化格式,只显示核心SQL内容

执行引擎配置

kernel-executor-size
  • 类型:整数
  • 默认值:无限制(infinite)
  • 作用:设置任务处理线程池大小
  • 重要说明
    • 每个ShardingSphereDataSource实例都拥有自己独立的线程池
    • 同一JVM内的不同数据源实例不会共享线程池资源
    • 合理设置此值可以平衡系统资源使用和并发性能
max-connections-size-per-query
  • 类型:整数
  • 默认值:1
  • 作用:控制每次查询在每个数据库实例上能使用的最大连接数
  • 应用场景: 对于需要同时从多个分片获取数据的查询,适当增加此值可以:
    • 提高并行度
    • 加速数据获取 但设置过高可能导致:
    • 数据库连接池压力增大
    • 系统资源消耗增加

元数据校验配置

check-table-metadata-enabled
  • 类型:布尔值
  • 默认值:false
  • 作用:是否在启动和更新时检查分片元数据的结构一致性
  • 详细说明: 当设置为true时,ShardingSphere会在以下时机检查元数据:
    1. 应用启动时
    2. 分片规则更新时 检查内容包括:
    • 表结构定义
    • 字段类型
    • 约束条件等 确保各分片的表结构保持一致

配置方式示例

属性配置采用YAML格式,通常与数据源配置、分片规则配置等一起放置在配置文件中。基本结构如下:

props:
    sql-show: true
    sql-simple: false
    kernel-executor-size: 20
    max-connections-size-per-query: 5
    check-table-metadata-enabled: true

最佳实践建议

  1. 开发环境:建议开启sql-show以方便调试,生产环境则应关闭
  2. 线程池大小:根据服务器CPU核心数和并发量合理设置kernel-executor-size
  3. 连接数控制:max-connections-size-per-query应根据数据库性能和查询复杂度调整
  4. 元数据校验:在表结构可能频繁变更的环境中建议开启check-table-metadata-enabled

通过合理配置这些属性,可以优化ShardingSphere的性能表现,同时获得必要的运行日志用于系统监控和问题排查。

shardingsphere Distributed SQL transaction & query engine for data sharding, scaling, encryption, and more - on any database. shardingsphere 项目地址: https://gitcode.com/gh_mirrors/sh/shardingsphere

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

### 关于 Apache ShardingSphere-Proxy 5.5.2 的 Java 配置及使用教程 #### Maven 依赖配置 为了在项目中集成 ShardingSphere-Proxy,首先需要引入其对应的 Maven 依赖。以下是适用于 Spring Boot 和 ShardingSphere-JDBC 的基础依赖配置: ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>5.5.2</version> </dependency> <!-- 如果需要支持加密功能 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-encrypt-spring-boot-starter</artifactId> <version>5.5.2</version> </dependency> ``` 上述依赖可以用于构建基于 ShardingSphere-JDBC 的应用环境[^3]。 #### ShardingSphere-Proxy 启动方式 ShardingSphere-Proxy 是通过命令行启动的服务端组件。可以通过以下命令解压并运行 Proxy 文件包: ```bash tar -zxvf apache-shardingsphere-5.5.2-shardingsphere-proxy-bin.tar.gz cd apache-shardingsphere-5.5.2-shardingsphere-proxy-bin/bin ./start.sh ``` 此过程会初始化 ShardingSphere-Proxy 并使其作为独立服务运行[^1]。 #### 配置文件详解 ShardingSphere-Proxy 的核心配置位于 `conf/server.yaml` 和 `conf/config-map.yaml` 中。以下是常见的配置项及其作用: - **server.yaml**: 定义监听地址、端口以及认证信息。 ```yaml authentication: users: root: password: root authorizedSchemas: db_0,db_1 props: max-connections-size-per-query: 10 query-with-cipher-column: true ``` - **config-map.yaml**: 可选配置文件,通常用于扩展属性设置。 这些配置能够满足基本的连接管理和权限控制需求[^2]。 #### 数据分片策略配置 如果需要实现数据分片逻辑,则需进一步定义分片规则。可以在 `conf/sharding-schema.yaml` 或程序内部完成如下配置: ```java import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration; import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration; public class ShardingConfig { public static void main(String[] args) { TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(); tableRuleConfig.setLogicTable("t_order"); ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); shardingRuleConfig.getTableRules().add(tableRuleConfig); } } ``` 以上代码片段展示了如何通过编程方式指定表级分片规则。 #### 加密与安全机制 针对敏感字段的安全处理,可启用 SM4 等国密算法进行加解密操作。具体配置可通过 YAML 文件或动态注入的方式完成: ```yaml rules: - !ENCRYPTOR name: sm4_encryptor type: SM4 props: cipher-key: your_cipher_key_here plain-columns: order_id,user_id ``` 该部分配置允许开发者灵活调整加密列范围和秘钥参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨女嫚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值