mysql的分区表的使用

本文介绍了MySQL的分区表概念,适用于数据量大的场景,包括hash、key、range和list四种分区方式。强调了分区表的限制,如分区数限制、分区键与主键的关系,并提醒在使用分区表时注意带上分区条件以提高查询效率。最后,指出分区表并非解决所有问题的万能药,需要深入理解才能有效利用。
摘要由CSDN通过智能技术生成

1.分区表的概念

mysql的分区表就是在物理层面把一张表分作多张子表存贮,在逻辑上是多张表对外部表现为同一张表。mysql的分区表对于用户来说是一个黑盒,用户可以像使用一般的表一样使用分区表,但是只有在对分区表足够了解的情况下,才能够正确的使用分区表,否则可能会带来一些性能上的问题。

2.分区表的适用场景

1.表的数据比较多,但一次只查一部分热点数据,比如按时间,或者按别的某种规则
2.分区表的索引是每个子表都会单独建一个索引,这点和oracle不同,oracle可以选择是否建立全局索引。根据键值进行分区可以减少innodb互斥量的竞争。
3.数据可以以较粗的粒度区分开,可以以分区的形式对数据进行管理。

3.分区表的限制

  1. 分区数最多只能有1024个分区
  2. 分区表达式必须是整数,或者返回整数的表达式。也可以使用列分区,例如 range,key,list都支持列分区。
  3. 如果表中有主键,或者唯一索引的话,分区键必须包含在主键和唯一索引中,否则会报错。

4.分区表的使用

mysql有hash,key,range,list分区,分区还可以包含子分区,子分区用的很少,这里不做介绍。

1.在可以在创建表时,通过partition by定义分区表,也可以通过alter语句,将表变为分区表,获取新增,合并,删除,拆分分区。
create部分定义如下,分区定义语句

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    [IGNORE | REPLACE]
    [AS] query_expression
    
........
partition_options:
    PARTITION BY
        { [LINEAR] HASH(expr)
        | [LINEAR] KEY [ALGORITHM={
  1|2}] (column_list)
        | RANGE{
  (expr) | COLUMNS(column_list)}
        | LIST{
  (expr) | COLUMNS(column_list)} }
    [PARTITIONS num]
    [SUBPARTITION BY
        { [LINEAR] HASH(expr)
        | [LINEAR] KEY [ALGORITHM={
  1|2}] (column_list) }
      [SUBPARTITIONS num]
    ]
    [(partition_definition [, partition_definition] ...)]

partition_definition:
    PARTITION partition_name
        [VALUES
            {LESS THAN {
  (expr | value_list) | MAXVALUE}
            |
            IN (value_list)}]
        [[STORAGE] ENGINE [=] engine_name]
        [COMMENT [=] 'string' ]
        [DATA DIRECTORY [=] 'data_dir']
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值