Mysql 全网最优(分库分表分区)

供稿:hz-xin.com     日期:2025-01-18
一、Mysql:分库分表

分库分表,针对高并发、数据量大的场景,优化系统性能的技术方案。分为三种情况:分库不分表、分表不分库、分库又分表。

1、分库

解决并发量大问题,增加数据库实例,提供更多的数据库连接,提升系统并发度。常见场景包括业务线拆分(如电商微服务)、数据量庞大的业务线(如数以万计的订单存储)。

2、分表

解决数据量大问题,增加分表减少单表数据量,提升查询速度。评估分表时机:单表容量超过2GB,考虑做分表。具体数量需根据数据容量、索引容量、表结构、存储引擎设置、硬件配置等综合评估。

3、分库分表

当数据库连接不足或单表数据量大导致查询缓慢时,需同时进行分库和分表操作,以提升系统整体性能。

二、Mysql:分表方式

1、横向拆分(水平拆分)

将同一表中的不同记录拆分至不同表,减少单表数据量。如将不同用户的订单拆分到不同表。

2、纵向拆分(垂直拆分)

将单表的多字段拆分至不同表,减少单表字段数量。如商品详情信息、价格信息、库存信息等分别拆分至不同表中(如分库情况,即业务线拆分也是一种纵向拆分)。

三、Mysql:分区

当表数据量过大时,可考虑分区操作,与分表类似,但数据存储方式有变化。分区表数据存储于多个.ibd文件中,分表则存储于多个.frm文件中,操作时需指定具体表名。

四、Mysql:分库分表工具

开源框架主要有Sharding-JDBC、TDDL、Mycat等。Sharding-JDBC为轻量级Java框架,提供额外服务,兼容JDBC和ORM框架。TDDL集成了分库分表等功能,Mycat是一款分布式关系型数据库中间件,支持分布式SQL查询。

五、案例

从Mycat、MybatisPlus过渡至Sharding-JDBC,最初项目采用分表解决并发量问题,但并发量仍然不足。使用Mycat进行分表操作(分表字段:门店ID;分表算法:门店ID取模1024)。重构整个生鲜Saas系统,实现分库分表优化。

如何用mysql建立数据库MySQL数据库基础知识及优化
SQL语句基础知识及优化SQL语句主要分为哪几类 *数据据定义语言DDL(Data Definition Language):主要有CREATE,DROP,ALTER等对逻辑结构有操作的,包括表结构、视图和索引。数据库查询语言DQL(Data Query Language):主要以SELECT为主数据操纵语言DML(Data Manipulation Language):主要包括INSERT,UPDATE,DELETE数据控制功能DCL(...