MySQL数据库的分区和分表的创建

本文介绍了MySQL中分区表和分表的具体实现方法,并对比了MyISAM与InnoDB两种存储引擎的特点及其适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、建立分区表

create table emp(
	id int ,
	name varchar(20),
	time varchar(10)
)
partition by range (id)
(
partition p1 values less than (2),
partition p2 values less than (4),
partition p3 values less than MAXVALUE
);

Insert into emp values(1,"john","202109"),(2,"zs","202110"),
(3,"li","202111"),(4,"ww","202108"),(5,"timi","202109");

只会生成一张表。
通过explain partitions select * from emp;可以查看分区:
在这里插入图片描述

查看某分区数据:
select * from emp partition (p1);
在这里插入图片描述

二、建立分表

1、数据库的存储引擎需要设置为:MyISAM格式。否则会报错:

 ERROR 1168 (HY000): Unable to open underlying table which is
  differently defined or of non-MyISAM type or doesn't exist;

2、建立分表后,实际上会分成多张单独的表,再创建一个总表把这些表union一起。
在这里插入图片描述

create table tb_member1(
    id bigint primary key auto_increment ,
    name varchar(20),
    sex tinyint not null default '0'
)ENGINE=MyISAM; 

create table tb_member2(
    id bigint primary key auto_increment ,
    name varchar(20),
    sex tinyint not null default '0'
)ENGINE=MyISAM; 

insert into tb_member1 values (1,'jacson','0');
insert into tb_member2 values (2,'tomy','1');

create table tb_member(
id bigint primary key auto_increment ,
name varchar(20),
sex tinyint not null default '0'
)
ENGINE=MERGE UNION=(tb_member1,tb_member2) 
INSERT_METHOD=LAST AUTO_INCREMENT=1;

附:MySQL数据库引擎MyISAM和InnoDB区别

MyISAM
① 不支持事务(事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功要么全部失败)。
② 表级锁定(更新时锁整个表)
③ 读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身不会阻塞另外的读。
④ 只会缓存索引:MyISAM可以通过key_buffer_size缓存索引,以大大提高访问性能,减少磁盘I/O,但这个缓存区只会缓存索引,而不会缓存数据。
⑤ 读取速度较快,占用资源相对少。
⑥ 不支持外键约束,但支持全文索引。
⑦ 5.5.5前为默认存储引擎。

适合的业务场景:

  1. 不需要事务支持的业务
  2. 读数据比较多的应用
  3. 数据库修改较少的业务
  4. 对数据一致性要求不是非常高的业务
  5. 硬件资源比较差的机器可以用MyISAM。

InnoDB
① 支持事务:支持4个事务隔离级别,支持多版本读。
② 行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁。
③ 读写阻塞与事务隔离级别相关。
④ 具有非常高效的缓存特性:能缓存索引,也能缓存数据。
⑤ 整个表和主键以Cluster方式存储,组成一颗平衡树。
⑥ 所有Secondary Index都会保存主键信息。
⑦ 支持分区,表空间,类似Oracle数据库。
⑧ 支持外键约束,5.5以前不支持全文索引,之后版本支持了。
⑨ 和MyISAM相比对硬件资源要求比较高。

适合的业务场景:

  1. 需要事务支持的业务
  2. 行级锁定对高并发有很好的适应能力,但需要确保查询时通过索引完成。
  3. 读写及更新都很频繁的场景
  4. 数据一致性要求较高的业务
  5. 硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可用减少磁盘I/O。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值