| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 使用shardingJDBC实现数据库的分库分表 -> 正文阅读 |
|
[游戏开发]使用shardingJDBC实现数据库的分库分表 |
一、概念1、什么是分库分表?为什么要分库分表? 随着业务的增加,数据库的数据量越来越多,当数据量达到1000w或者100G后,数据的查询效率就会越来越低,为了提高效率,把数据量分散在不同的数据库中或者表中,使得单一数据库的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。 2、分库分表的方式 (1)垂直分表:根据分片规则,将数据分布到不同表中。 (2)水平分表:将相关性低的字段拆分到不同的表中。 (3)垂直分库:根据分片规则,将数据分布到不同的库中。 (4)水平分库:根据业务拆分不同的数据库,比如说一个微服务就对应一个自己的数据库。 二、实现1、导入shardingJDBC和springboot整合的依赖:
2、在application.properties中对分片规则进行配置,分片规则配置是sharding-jdbc进行对分库分表操作的重要依据,配置内容包括:数据源、主键生成策略、分片策略等。
(1)、定义数据源,需要分库的数据库 (2)、指定数据节点,即分表的表 (3)、配置主键生成策略,雪花算法 (4)、指定分表策略。可以使用inline表达式的方式,也可以自定义,也可以通过preciseAlgorithmClassName 类的方式自定义分片规则。 如根据时间来对数据进行分片:
3、测试 三、执行流程当shardingJDBC接受到一条SQL语句时,会依次执行SQL解析---->SQL路由---->SQL改写 ----->SQL执行----->结果归并。 ? ? ? ? ? ? ? ? ? ? ? ? ?? (1)SQL解析:会根据SQL语句进行解析,生成一个SQL的语法树。 (2)SQL路由:根据分片规则进行匹配到具体的哪一个数据库或者表 (3)SQL改写:将SQL中逻辑表改写真实的物理表,结果归并中需要对结果进行排序或者分组的时候,如果原始SQL中的选择项中并不包含分组项或者排序项,则需要对原始SQL进行改写。 (4)SQL执行:执行改写后的SQL语句 (5)结果归并:将结果进行归并 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 20:07:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |