mysql分区

什么是分区?

         所谓分区就是将一个表分解成多个区块进行操作和保存,从而降低每次操作的数据量,提高性能。

         分区对于应用来说是透明的,在逻辑上还是一个表(跟分表的访问不一样),只是在物理上分为多个区块来存储,每个分区都是一个独立的对象,可以单独被操作。


分区能做什么?

1、进行逻辑数据分割,分割数据能有多个不同的物理文件路径。

        2、可以存储更多的数据,突破单个文件的最大限制。

  3、提升性能,提高每个分区的读写速度。

        4、可以通过删除分区来快速删除数据

5、通过跨多个磁盘的散列分区数据查询,从而提高磁盘i/o性能

6、涉及到sum()   count()等聚合处理,能很快的做并行处理,区块并行统计完成后再进行汇总

7、可以备份和恢复独立的分区,这样对大数据量有好处


分区支持的引擎

       MyIsam和InnoDB支持分区,MERGE和csv不支持分区。同一个分区表中的所有分区必须是同一个引擎。


确认mysql支持分区

      mysql5.1开始引入分区功能,可以用如下方式查看 是否支持分区:

      1、老版本用  show variables like ‘%partition%’

2、新版本   可以用   show plugins  


分区类型

1、RANGE分区:基于一个连续的区间数值分区

  2、LIST分区: 列值匹配一个离散值集合中的某个值来进行分区

3、HASH分区: 基于用户自定义的表达式返回值来进行分区

4、key分区:类似于hash分区,由mysql自身提供的哈希函数分区


分区需要注意的问题

  1、如果表中存在主键和外键,分区要从中选择一个作为分区键

2、如果不存在主外键,则可任选一个字段作为分区键

3、5.5版本前,range、list、hash分区要求分区键必须是int型;5.5及以上版本,支持非整形的rang和list分区


分区命名

分区命名基本遵循mysql命名原则,分区命名不区分大小写

无论何种分区类型,分区在创建的时候就自动顺序编号,而且是从0开始记录


创建分区

      1、 range分区

create table tbl_users(

uuid     int   not null,

name varchar(20) 

)


PARTITION BY RANGE(uuid)(

PARTITION p0 VALUES LESS THAN(5),

PARTITION P1 VALUES LESS THAN(10)

PARTITION P3 VALUES LESS THAN MAXVALUE

);



查看分区

   1、存放数据的文件位置  /usr/bin/mysql_config

2、查看分区信息  select * from information_schema.partitions where table_schema = 'arch1'  and table_name ='tbl_user' 

3、直接查询分区数据   select * from tbl_user partition(p0)

4、 explain partitions select * from tbl_user  where uuid =1;  查看sql执行情况 sql操作的哪个分区







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值