`

MySQL分区表

 
阅读更多

查看分区情况


点击(此处)折叠或打开

  1. SELECT * FROM information_schema.PARTITIONS WHERE table_name='table_name'

PARTITION_NAME:分区的名称

PARTITION_METHOD:分区的类型

TABLE_ROWS:分区数据条数


RANGE分区:

点击(此处)折叠或打开

  1. create table t (
  2. id int) engine=innodb
  3. partition by range (id) (
  4. partition p0 values less than (10), --id小于10的加入p0分区
  5. partition p0 values less than (20));--id大于等于10小于20的加入p1分区

 

增加分区

点击(此处)折叠或打开

  1. alter table r add partition (partition p2 values less than maxvalue); --所有大于等于20的加入p2分区

 

 


点击(此处)折叠或打开

  1. CREATE TABLE `w` (
  2.   `money` INT(10) UNSIGNED NOT NULL,
  3.   `date` DATETIME DEFAULT NULL
  4. ) ENGINE=INNODB DEFAULT CHARSET=utf8
  5.  PARTITION BY RANGE (YEAR(DATE)) --定义的规则也可以是函数
  6. (PARTITION p2010 VALUES LESS THAN (2010),
  7.  PARTITION p2001 VALUES LESS THAN (2011),
  8.  PARTITION p2012 VALUES LESS THAN (2012));

 

  删除分区

 

 


点击(此处)折叠或打开

  1. alter table w drop partition p2010;

--删除分区,则分区的数据也删除

 

----------------------------------------------------------------------


 LIST分区

 

点击(此处)折叠或打开

  1. CREATE TABLE m (
  2. INT,
  3. INT)ENGINE=innnodb
  4. PARTITION BY LIST (b)(
  5. PARTITION p0 VALUES IN (1,2,3,4,5),
  6. PARTITION p1 VALUES IN (6,7,8,9,10));

  7. insert into m values (1,6),(2,7),(3,11),(4,9)

 

--插入的值(3,11)不符合,如果是innodb引擎,后面(4,9)符合条件不会插入表中,

   如果是myisam引擎,后面(4,9)符合条件则会插入表中

   

----------------------------------------------------------------------

  

HASH分区

 

点击(此处)折叠或打开

  1. CREATE TABLE m_hash (
  2. INT,
  3. b DATETIME)ENGINE=innnodb
  4. PARTITION BY HASH (YEAR(b)) --"partition by hash (expr)" expr是一个返回整数的表达式
  5. PARTITIONS 4; --表示要被分割成分区的数量,没有则默认是1

 

 如:加入分区的算法mod(expr,分区数量4)=0 则加入p0

点击(此处)折叠或打开

  1. PARTITION BY LINEAR HASH (YEAR(b))

--与hash只是算法不同,返回是值是一样的

----------------------------------------------------------------------


COLUMNS分区 

mysql5.5开始支持,视为RANGE分区和LIST分区的一种进化,支持INT,SMALLINT,TINYINT,BIGINT.DATE,DATETIME.CHAR,VARCHAR,BINARY,VARBINARY类型

 

点击(此处)折叠或打开

  1. CREATE TABLE t_columns_range(
  2. INT,
  3. b DATETIME) ENGINE=INNODB
  4. PARTITION BY RANGE COLUMNS (b) --也可以PARTITION BY LESS COLUMNS (b) 
  5. (PARTITION p0 VALUES LESS THAN('2009-01-01'),
  6. PARTITION p1 VALUES LESS THAN('2010-01-01'));
分享到:
评论

相关推荐

    互联网公司为啥不使用mysql分区表

    "互联网公司为啥不使用mysql分区表" 在互联网公司中,mysql分区表是一个比较少用的技术,这是因为分区表存在一些缺陷和限制,使得互联网公司更多地选择自己分库分表来水平扩展数据库。 首先,分区表的设计需要考虑...

    MySQL分区表自动创建及删除存储过程

    MySQL分区表是一种优化大型数据表查询效率的技术,它将一个大表分成多个逻辑上相连但物理上独立的部分,每个部分称为一个分区。分区可以按照不同的策略进行,如范围、哈希、列表或复合分区。这样做有助于提高数据...

    MySQL分区表:万字详解与实践指南

    ### MySQL分区表:万字详解与实践指南 #### 一、引言 在现代数据库管理中,随着数据量的不断增长,如何高效管理和查询数据成为了一个重要的课题。MySQL作为广泛使用的开源关系型数据库管理系统之一,提供了多种强大...

    通过实例学习MySQL分区表原理及常用操作

    MySQL分区表是一种数据库管理策略,它将一个大表的数据分散到多个物理存储单元,从而提高数据管理和查询性能。本文将深入探讨分区表的概念、优点、限制以及常见的分区类型。 首先,分区表的基本概念是根据特定的...

    详解MySQL分区表

    【MySQL分区表详解】 分区表是数据库管理中一种高级的数据组织策略,主要目的是为了提高大表的查询效率和数据管理的便利性。在MySQL中,分区表是通过`PARTITION BY`子句来实现的,它允许我们将一个大的表根据特定的...

    Mysql分区表的管理与维护

    MySQL分区表是一种优化大型数据库性能的技术,它将一个大表分成多个较小的部分,每个部分称为一个分区,从而提高查询效率和管理能力。分区通常应用于处理大量数据的表,特别是那些有明确范围或时间属性的数据,如...

    MySQL分区表的最佳实践指南

    MySQL分区表是一种优化大型数据库性能的技术,它将大表逻辑上划分为更小、更易管理的部分,以提高查询速度和数据管理效率。本文将深入探讨MySQL分区表的最佳实践,包括分区的目的、类型、操作示例以及适用场景。 1....

    创建mysql表分区的方法

    3. **添加数据**:向分区表中插入数据,MySQL会自动根据分区规则分配。 4. **管理分区**:可以添加、删除或重定义分区,以适应数据变化。 **示例:RANGE分区创建** ```sql CREATE TABLE p_range ( id INT(10) NOT...

    mysql分区表管理(完整版)

    数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于...MYSQL的分区主要有两种形式:水平分区和垂直分区。

    MySQL分区分表方案实践手册

    #### 三、MySQL分区表常用操作示例 接下来通过具体的示例来展示如何创建不同类型的分区表: 1. **创建RANGE分区**: - 基于员工工资创建范围分区:`CREATE TABLE emp (empno VARCHAR(20) NOT NULL, empname ...

    mysql分区表LIST

    MySQL分区表是数据库管理系统中的一种优化策略,它将大型表分成多个较小的部分,每个部分(或称为分区)存储在不同的物理位置,以提高查询性能和管理效率。在MySQL中,分区通常基于范围、列表、哈希或键值的某种组合...

    MySQL分区表的正确使用方法

    MySQL分区表是一种优化大数据量表查询效率和管理历史数据的有效策略。它将一个大表物理地分割成多个独立的部分,每个部分称为一个分区,每个分区有自己的索引和数据,但对外表现为一个完整的逻辑表。这使得对大量...

    MySQL分区表的基本入门教程

    在最近的项目中,我们需要保存大量的数据,而且这些数据是有有效期的,为了提供查询效率以及快速删除过期数据,我们选择了MySQL的分区机制。把数据按照时间进行分区。 分区类型 Range分区:最为常用,基于属于一个...

Global site tag (gtag.js) - Google Analytics