news 2026/4/23 13:45:18

数据库分片和分区

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库分片和分区

1.分片Database Sharding

是一种水平拆分(Horizontal Partitioning,按行拆分)的方案,用来解决单机数据库在数据量、并发量上的瓶颈问题。(垂直拆分是指按列的字段拆分。)

一句话定义:

把同一张逻辑表的数据,按某种规则拆分,分布存储在多台数据库机器(或多个库/表)上。

  • 对业务来说, 还是“一张表

  • 对物理存储来说: 实际是“多台机器上的多张表

// 逻辑上一张表 user(id, name, age, ...) // 分片后,物理结构可能是: db1.user_0 (存 user_id % 2 == 0 的数据) db2.user_1 (存 user_id % 2 == 1 的数据) //从业务视角查询: SELECT * FROM user WHERE id = 123; // 底层处理时 SELECT * FROM db2.user_1 WHERE id = 123;

1.1 缺点

  1. 跨分片查询。
  2. 自增主键不再可用。

2.分区

表分区是数据库(如 MySQL、PostgreSQL)提供的一种单库内的物理拆分机制

核心点:

  • 对业务是 1 张表

  • 对数据库也是 1 个库

  • 对存储引擎来说是多份数据文件

👉 所有分区都在同一台数据库实例里。按时间分区的例子:

CREATE TABLE orders ( id BIGINT NOT NULL, create_time DATE NOT NULL, amount INT, PRIMARY KEY (id, create_time) ) PARTITION BY RANGE (TO_DAYS(create_time)) ( PARTITION p202401 VALUES LESS THAN (TO_DAYS('2024-02-01')), PARTITION p202402 VALUES LESS THAN (TO_DAYS('2024-03-01')) );

已有数据的表新增分区,必须创建时已有分区才行:

ALTER TABLE orders ADD PARTITION ( PARTITION p202403 VALUES LESS THAN (TO_DAYS('2024-04-01')) );

3.月表怎么创建

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:21:23

MySQL 中如何进行 SQL 调优

重点 平时进行 SQL 调优,主要是通过观察慢 SQL,然后利用 explain 分析查询语句的执行计划,识别性能瓶颈,优化查询语句。 1) 合理设计索引,利用联合索引进行覆盖索引的优化,避免回表的发生,减少一次查询和随机 I/O 回表:索引无法满足查询所需的所有列数据&#xff0c…

作者头像 李华
网站建设 2026/4/23 9:44:32

专业的TP公司主要是做什么的呢?

TP(Tmall Partner,天猫合作伙伴)公司是经天猫等主流电商平台官方认证的专业代运营机构,凭借对平台规则的深度掌控、成熟的运营方法论与丰富的资源储备,成为品牌布局天猫等核心电商渠道的重要战略伙伴。在品牌线上化竞争…

作者头像 李华
网站建设 2026/4/22 19:12:18

mysql WITH的多种用法与示例

在 MySQL 中,WITH 语句(或称为公用表表达式,Common Table Expressions,简称 CTE)用于定义一个临时结果集,可以在查询的其他部分中重复引用。通常用在复杂查询中,方便将查询逻辑分解为多个部分&a…

作者头像 李华
网站建设 2026/4/23 8:21:27

Thinkphp和Laravel框架的西安工商学院学生请假管理系统_s4hrg6g5

目录ThinkPHP与Laravel框架的西安工商学院学生请假管理系统项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理ThinkPHP与Laravel框架的西安工商学院学生请假管理系统 该系统基于ThinkPHP或Laravel框架开发,旨在为西安工商学院提供高效的…

作者头像 李华