`

mysql分区操作

阅读更多

--创建分区(按时间年)
ALTER TABLE ad_site_trace PARTITION BY RANGE (YEAR(visit_time))
(PARTITION p0 VALUES LESS THAN (2011),
PARTITION p1 VALUES LESS THAN (2012)  );

--创建分区(按id进行哈希),分成100个区
ALTER TABLE ad_site_trace PARTITION BY HASH(id)
PARTITIONS 100;

--指标数值表分区
ALTER TABLE site_statisticdata_day PARTITION BY HASH(id)
PARTITIONS 100;

EXPLAIN SELECT COUNT(id) FROM ad_site_trace WHERE id >10000
--重建分区
ALTER TABLE ad_site_trace REBUILD PARTITION ( p0,p1);

 

 

表分区

增加新的分区  ALTER TABLE ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));

ALTER TABLE members REORGANIZE PARTITION p0 INTO (

    PARTITION s0 VALUES LESS THAN (1960),

    PARTITION s1 VALUES LESS THAN (1970)

);

SHOW CREATE TABLE trb3\G


已存在表增加分区

alter table temp_justin partition by range(to_days(create_time))
(
partition p1012 values less than (to_days('2011-01-01')),
partition p1101 values less than (to_days('2011-02-01')),
partition p1102 values less than (to_days('2011-03-01')),
partition p1103 values less than (to_days('2011-04-01')),
partition p1104 values less than (to_days('2011-05-01')),
partition p1105 values less than (to_days('2011-06-01')),
partition p1106 values less than (to_days('2011-07-01')),
partition p1107 values less than (to_days('2011-08-01')),
partition p1108 values less than (to_days('2011-09-01')),
partition p1109 values less than (to_days('2011-10-01')),
partition p11010 values less than (to_days('2011-11-01')),
partition p11011 values less than (to_days('2011-12-01')),
partition p11012 values less than (to_days('2012-01-01'))
);


PARTITION BY RANGE (year(c3)) (PARTITION p0VALUESLESS THAN (1995),

  -> PARTITION p1 VALUES LESS THAN (1996) ,PARTITIONp2 VALUES LESS THAN (1997) ,

  -> PARTITION p3 VALUES LESS THAN (1998) ,PARTITIONp4 VALUES LESS THAN (1999) ,

  -> PARTITION p5 VALUES LESS THAN (2000) ,PARTITIONp6 VALUES LESS THAN (2001) ,

  -> PARTITION p7 VALUES LESS THAN (2002) ,PARTITIONp8 VALUES LESS THAN (2003) ,

  -> PARTITION p9 VALUES LESS THAN (2004) ,PARTITIONp10 VALUES LESS THAN (2010),

  -> PARTITION p11 VALUES LESS THAN MAXVALUE);


    mysql> CREATE TABLE part_date3
   2.
          ->      (  c1 int default NULL,
   3.
          ->  c2 varchar(30) default NULL,
   4.
          ->  c3 date default NULL) engine=myisam
   5.
          ->      partition by range (to_days(c3))
   6.
          -> (PARTITION p0 VALUES LESS THAN (to_days('1995-01-01')),
   7.
          -> PARTITION p1 VALUES LESS THAN (to_days('1996-01-01')) ,
   8.
          -> PARTITION p2 VALUES LESS THAN (to_days('1997-01-01')) ,
   9.
          -> PARTITION p3 VALUES LESS THAN (to_days('1998-01-01')) ,
  10.
          -> PARTITION p4 VALUES LESS THAN (to_days('1999-01-01')) ,
  11.
          -> PARTITION p5 VALUES LESS THAN (to_days('2000-01-01')) ,
  12.
          -> PARTITION p6 VALUES LESS THAN (to_days('2001-01-01')) ,
  13.
          -> PARTITION p7 VALUES LESS THAN (to_days('2002-01-01')) ,
  14.
          -> PARTITION p8 VALUES LESS THAN (to_days('2003-01-01')) ,
  15.
          -> PARTITION p9 VALUES LESS THAN (to_days('2004-01-01')) ,
  16.
          -> PARTITION p10 VALUES LESS THAN (to_days('2010-01-01')),
  17.
          -> PARTITION p11 VALUES LESS THAN MAXVALUE );
  18.

分享到:
评论

相关推荐

    MySQL 分区

    MySQL分区是一种数据库优化技术,它将大型表分成更小、更易管理的部分,每个部分称为一个分区。这种技术有助于提高查询性能,特别是对于那些需要处理大量数据或执行复杂查询的应用程序。MySQL支持多种分区类型,包括...

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

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

    MySQL分区分表方案实践手册

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

    mysql分区文档

    - MySQL 5.1 和 5.5 版本开始支持分区功能,确保数据库版本支持分区操作。 - 分区策略的选择应基于实际业务需求和数据分布情况。 - 不是所有表都适合分区,小表或查询条件不涉及分区字段的表分区效果可能不明显。 - ...

    mysql表分区

    在进行分区操作前,首先要确认当前数据库版本是否支持分区功能,可以使用查询语句 show variables like '%partition%' 来确认。 创建分区表时,需要在创建表语句中使用 PARTITION BY 子句,并指定分区的类型和规则...

    MySQL 5.5.8 分区表性能测试

    3. **维护操作**:MySQL 5.5.8还增强了对分区表的维护功能,例如ALTER TABLE和OPTIMIZE TABLE命令可以更快地完成对分区表的重构和优化。这对于数据量庞大的系统来说尤其关键,因为它允许在不影响业务运行的情况下...

    mysql 数据库表分区

    - 提供了对MySQL表分区的操作接口,包括创建、追加和删除分区。 - 追加分区意味着可以在表已经存在分区的基础上增加新的分区,适应不断增长的数据。 - 创建分区时,可以根据业务需求设置分区条件,如日期范围、...

    MySQL分区实战

    #### 一、MySQL分区概述与应用场景 在当今互联网行业中,MySQL数据库作为最常用的关系型数据库之一,在数据管理方面扮演着极其重要的角色。随着数据量的不断增长,对数据库性能的要求也日益提高。为了提高查询效率...

    MySQL数据库分区技术

    MySQL数据库分区技术,解决多并发问题,详细描述分区流程及操作步骤

    mysql分区.pdf

    MySQL分区是数据库管理系统MySQL中的一种数据存储管理技术,它允许用户将数据表拆分成多个较小的、更容易管理的片段。这些片段被称为分区。通过这种技术可以提高数据库的性能,便于维护和备份,并且可以对不同分区...

    mysql分区资源整理

    ### MySQL分区资源整理 #### 一、分区概念与优势 MySQL中的分区技术是数据库优化的重要手段之一,尤其适用于处理大规模数据集。通过分区,数据库能够将一个庞大的表拆分为若干个小部分,使得管理和操作变得更加...

    MySQL分区管理工具

    MySQL分区管理工具是一种优化数据库性能的技术,它将大型表分解为更小、更易管理的部分,以提高查询效率和数据管理的便利性。在MySQL中,分区主要基于表的数据,根据预定义的规则将数据分布到不同的物理部分。这样...

    MySql数据分区操作之新增分区操作

    在本篇文章中,我们将讨论如何在MySQL中对已存在的表进行分区操作,特别是新增分区。 首先,尝试直接通过`ALTER TABLE`语句添加分区到非分区表会导致错误,MySQL会返回`ERROR 1505 <HY000>: Partition management ...

    MYSQL 通过分区(Partition)提升MySQL性能

    #### MySQL分区类型 MySQL支持多种类型的分区方式,主要包括: - **水平分区(Horizontal Partitioning)**:根据行数据进行划分,将不同的行分配到不同的分区中。例如,可以通过某一列值的范围来决定行数据属于...

    Oracle10个分区和Mysql分区区别详解

    MySQL 的分区操作可能需要锁定表。 - 在分区维护方面,Oracle 提供了更多的工具和功能,如 Partitioning Advisor,可以帮助优化分区策略。 总的来说,Oracle 的分区功能更为强大,提供了更丰富的分区策略和组合...

    mysql通过Navicat分区实操讲解

    mysql分区有利于管理非常大的表,mysql分区一共有四种类型,range分区,list分区, hash分区,key分区,我们通过Navicat 可视化工具来分区 1、打开Navicat 找到指定的数据库,设计表 2、打开设计表选择选项,下面有...

    zabbix_mysql分区1

    在Zabbix 3.2之前的版本,可能需要先更改`history_text`和`history_log`表的索引结构,以支持后续的分区操作。以下是更改索引的示例: ```sql Alter table history_text drop primary key, add index (id), drop ...

Global site tag (gtag.js) - Google Analytics