十三、mysql 分区之 RANGE && LIST

1.RANGE 分区
    创建实例:
    CREATE TABLE EMP (
        id int not null primary key auto_increment,
        name char(25) not null default ‘‘
    )
    PARTITION BY RANGE (id) ( 将字段id定义为分区的字段
    PARTITION P0 VALUES LESS THAN (100), 99以下的id都归到p0分区
    PARTITION P1 VALUES LESS THAN (200), 100-199
    PARTITION P2 VALUES LESS THAN (300)  200-299
    );
    PS::因为默认会将0也算进去,所以P0实际可以存储0-99或-数
    PS::要么不包含主键,如果要包含主键,那么分区字段也必须是主键
    PS::mysql5.5以上支持日期进行分区,有什么作用,^_^,你可以想到的

2.List分区
    创建实例:
    CREATE TABLE LIST_EMP (
        tid int not null PRIMARY key auto_increment,
        tname char(20)
    )
    PARTITION BY LIST (tid) (
        PARTITION P0 VALUES IN (1,3,5,7,9),
        PARTITION P1 VALUES IN (2,4,6,8,10)
    );
    PS::通过上面的2种分区不难看出,RANGE分区是指定一个范围,而List分区是指定一个列表,在list中,只有指定的值才能存进去!
    PS::个人觉得List分区更多可以用在分类上面
    测试:
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);
    insert into list_emp values (null,‘Php‘);

    insert into list_emp values (null,‘Php‘);ERROR 1526 (HY000): Table has no partition for value 11

    PS::第11条数据的时候报错,因为没有任何分区表包含了它

十三、mysql 分区之 RANGE && LIST,布布扣,bubuko.com

时间: 2024-08-06 05:36:59

十三、mysql 分区之 RANGE && LIST的相关文章

mysql分区和分表

mysql分表和分区 1.mysql分表 什么是分表? 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,MYI索引文件,frm表结构文件.如果是Innodb存储引擎,索引文件和数据文件存放在同一个位置.这些表可以分布在同一块磁盘上,也可以在不同的机器上. app读写的时候根据事先定义好的规则得到对应的的表明,然后去操作它. 将单个数据库表进行拆分,拆分成多个数据表,然后用户访问的时候,根据一定的算法(如用hash的方式,也可以用取余的方式)

mysql分区功能详细介绍,以及实例

一.什么是数据库分区 下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的.如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这一张表对应的三个文件,分割成许多个小块,这样呢,我们查找

十四、mysql 分区之 HASH && KEY

1.hash分区 PS::个人觉得HASH分区很好很强大,简单确分布极其均匀 创建实例: CREATE TABLE HASH_EMP ( tid int, tname char(255) ) PARTITION BY HASH (tid) PARTITIONS 8; 将hash_emp进行的tid进行hash分区,并分为8个区 查询分区的数据分布情况: select partition_name,partition_expression,partition_description,table_r

mysql分区及分表(二)

mysql分区分表(二) 测试未分区表和分区表性能 重新创建新的测试数据库及未分区表back1 创建分区表back2,按照年月区分 maxvalue把对于2005的值全放在p11区里 创建大点的数据(方便测试的时候区分明显分区和未分区的区别) rand()函数在0和1之间产生一个随机数,如果一个整数参数N指定,它被用作种子值..每个种子产生的随机数序列是不同的 执行存储过程load_part_tab向back2中插入数据 向back1中插入数据 测试未分区和分区的性能 可以通过explain语句

mysql分区技术

mysql分区技术在物理存储上使数据表进行分离,逻辑上还是一张表 mysql5.1以上版本有5种分区类型 RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区. LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择. HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算.这个函数可以包含MySQL 中有效的.产生非负整数值的任何表达式. KEY 分区:类似于按HASH分区

深入解析MySQL分区(Partition)功能

自5.1开始对分区(Partition)有支持 = 水平分区(根据列属性按行分)= 举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录. === 水平分区的几种模式:=== * Range(范围) – 这种模式允许DBA将数据划分不同范围.例如DBA可以将一个表通过年份划分成三个分区,80年代(1980's)的数据,90年代(1990's)的数据以及任何在2000年(包括2000年)后的数据. * Hash(哈希) – 这中模式允许DBA通过对表的一

十五、mysql 分区之 分区管理

1.mysql分区处理分区字段NULL值的方式 1.range分区null被当作最小值处理 2.list分区null值必须被枚举出来,否则将出错 3.hash/key分区 null值当作0处理 2.RANGE && LIST 分区管理 1.删除分区 alter table emp drop partition p0; //删除emp的p0分区,注意也会同时删除该分区的数据 2.增加分区 alter table emp add partition (partition p5 values l

mysql 分区

一.为什么要分区? 需求:大数据.解决方案:分而治之,更细一点即为.将大表和大索引分为一个更小的操作单元在mysql中,分区允许将表.索引和索引编排表细分为更小的单元.分区后,每个分区有自己单独的名称.对于DBA来讲,这些分区可以统一管理,也可以分开管理.但是对于应用程序来讲,分区的表和没有分区的表示一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理.Mysql分区,这个是mysql对于分区的官方解释. 1.分区的作用 a)提升性能 应该说,几乎所有分区的目的都是用来提升性能

mysql分区那些事

mysql中的分区有range.list.hash.key四种分区方法 我们这里介绍range方法,其他的可以融会贯通 对已有表进行分区(range模式) ALTER TABLE 表名 PARTITION by range(字段名) (PARTITION 分区名 VALUES LESS THAN (字段值) ); alter TABLE user_log PARTITION by range(id) ( PARTITION user_log_a VALUES less than (17), PA