醋醋百科网

Good Luck To You!

shardingSphere分库分表利器,查询速度高一倍

sharding是什么

  1. 数据分段
  2. 分布式事务
  3. 读写分离
  4. 数据库网管
  5. 流量治理
  6. 数据迁移
  7. 数据加密
  8. 数据脱敏

快速入门

导入依赖

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-jdbc</artifactId>
    <version>4.1.1</version>
</dependency>

yml配置

# JDBC 逻辑库名称。在集群模式中,使用该参数来联通 ShardingSphere-JDBC 与 ShardingSphere-Proxy。
# 默认值:logic_db
databaseName (?):

mode:

dataSources:

rules:
- !FOO_XXX
    ...
- !BAR_XXX
    ...

props:
  key_1: value_1
  key_2: value_2

application.properties配置

# 配置 DataSource Driver
spring.datasource.driver-class-name=org.apache.shardingsphere.driver.ShardingSphereDriver
# 指定 YAML 配置文件
spring.datasource.url=jdbc:shardingsphere:classpath:xxx.yaml

数据分片功能

在设计开发中mysql数据量增大,查询io次数增加,查询出现缓慢的问题

如果解决这个问题

就是进行分库的方式

比如订单表的方式

订单数据量有1w

查询订单每次都需要花费30秒的时候

使用数据分片功能

把order分为order_1和order_2的表的方式

插入策略配置奇偶的方式

查询速度就会提升到10-15秒之内

这个使用在数据表量大

还有一个拆分的方式叫做垂直拆分的方式

把俩个表分别存储在不同库中的方式

比如

我们有一个user表和order在db库中

我们把user表存储在db01把order存储在db02

查询速度也会提升


读写分离的方式

比如我们现在有进行水平拆分的方式把order表

拆分成俩个表的方式

order_1,order_2

我们可以配置在order_1表中进行读取数据

在order_2进行写入数据,

通过order_2从库同步到order_1表中的方式

数据网关

比如我们配置8个数据库

每个数据库对应不同服务

我们可以通过配置方式,插入每个数据库,查询每个数据库

流量控制

比如我们现在有3个数据库

order_1,order_2,order_3

现在order_1访问量突然增加了

导致order_1io极速上升,如果不进行手动控制,会导致数据库奔溃

在开始的我们配置,sharding访问控制达到100访问量,进行自动熔断的方式

如果来101用户,我们主动提示,系统业务繁忙进行稍后处理的方式




问题


一直出现数据源找不到

配置信息和数据源的方式

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言