表分区

Mysql 表分区

元气小坏坏 提交于 2020-02-28 17:18:03
对 于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库中进行访问操作。但 随着后续的市场推广力度不断加强,用户数量和并发量不断上升,这时如果仅靠一个数据库来支撑所有访问压力,几乎是在自寻死路。所以一旦到了这个阶段,大部 分Mysql DBA就会将数据库设置成读写分离状态,也就是一个Master节点对应多个Salve节点。经过Master/Salve模式的设计后,完全可以应付单 一数据库无法承受的负载压力,并将访问操作分摊至多个Salve节点上,实现真正意义上的读写分离。但大家有没有想过,单一的Master/Salve模 式又能抗得了多久呢?如果用户数量和并发量出现量级上升,单一的Master/Salve模式照样抗不了多久,毕竟一个Master节点的负载还是相对比 较高的。为了解决这个难题,Mysql DBA会在单一的Master/Salve模式的基础之上进行数据库的垂直分区(分库)。所谓垂直分区指的是可以根据业务自身的不同,将原本冗余在一个数 据库内的业务表拆散,将数据分别存储在不同的数据库中,同时仍然保持Master/Salve模式。经过垂直分区后的Master/Salve模式完全可 以承受住难以想象的高并发访问操作,但是否可以永远高枕无忧了?答案是否定的,一旦业务表中的数据量大了,从维护和性能角度来看

九、MySQL的分区

两盒软妹~` 提交于 2019-11-29 01:42:21
MySQL支持数据分区,可以在对用户无感知的情况下,将对表数据的物理文件进行分区。 MySQL的分区支持Memory、MyISAM、InnoDB等存储引擎。 注意:MySQL中如果存在主键,或者唯一索引,那么分区字段必须包含这些字段。 MySQL分区的优点 1、 分区后的文件可以存储在不同的分区,提高MySQL存储量 2、根据查询条件可以有选择之扫描某个分区,使用sum等聚合函数的时候可以并行检索所有分区。 3、通过一定规则的分区,可以快速删除分区内的数据,比如存储日志按月分区可以快速删除历史日志。 4、通过将分区保存在不同的硬盘之上,来提升系统的IO吞吐量。 分区相关的命令 检查MySQL版本是否支持分区 //查看表分区状态 查看 have_parttition_engine 是否为YES SHOW VARIABLES LIKE '%parttition%'; 检测SQL查询扫描了哪个分区 //检查SQL语句使用了哪个分区分区 explain partitions SQL; MySQL的分区方式 目前MySQL支持 range、list、columns、hash、key等几种分区方式。 Range方式 Range方式的分区,可以选择指定字段根据连续的区间进行分区,比如: 小于20的分区为 p0,20-40的叫做p1 40-60的叫做p2,大于60的叫做p3,在MySQL中的表示为