分表 和 分区 是 MySQL 中用于优化数据库性能的两种技术。
分表是将一个大表拆分成多个小表的过程。这种拆分可以是基于业务逻辑的,也可以是随机拆分。分表的目的是减少单个表的数据量,从而提高查询效率。
分区是将一个大表的数据分散到多个物理子表中,每个子表称为一个分区。分区是基于某个列的值进行的,通常是日期、ID 等。分区的目的是将数据分散到不同的物理存储位置,从而提高查询效率。
假设我们有一个 user
表,数据量巨大,我们可以将其水平分表:
-- 创建分表
CREATE TABLE user_1 (
id INT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
CREATE TABLE user_2 (
id INT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
-- 插入数据
INSERT INTO user_1 (id, name, email) VALUES (1, 'Alice', 'alice@example.com');
INSERT INTO user_2 (id, name, email) VALUES (2, 'Bob', 'bob@example.com');
假设我们有一个 order
表,数据量巨大且查询频繁,我们可以按日期进行分区:
-- 创建分区表
CREATE TABLE order (
id INT PRIMARY KEY,
order_date DATE,
amount DECIMAL(10, 2)
) PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p0 VALUES LESS THAN (2020),
PARTITION p1 VALUES LESS THAN (2021),
PARTITION p2 VALUES LESS THAN (2022),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
-- 插入数据
INSERT INTO order (id, order_date, amount) VALUES (1, '2020-01-01', 100.00);
INSERT INTO order (id, order_date, amount) VALUES (2, '2021-02-02', 200.00);
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云