--创建分区(按时间年)
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分区表常用操作示例 接下来通过具体的示例来展示如何创建不同类型的分区表: 1. **创建RANGE分区**: - 基于员工工资创建范围分区:`CREATE TABLE emp (empno VARCHAR(20) NOT NULL, empname ...
- MySQL 5.1 和 5.5 版本开始支持分区功能,确保数据库版本支持分区操作。 - 分区策略的选择应基于实际业务需求和数据分布情况。 - 不是所有表都适合分区,小表或查询条件不涉及分区字段的表分区效果可能不明显。 - ...
在进行分区操作前,首先要确认当前数据库版本是否支持分区功能,可以使用查询语句 show variables like '%partition%' 来确认。 创建分区表时,需要在创建表语句中使用 PARTITION BY 子句,并指定分区的类型和规则...
3. **维护操作**:MySQL 5.5.8还增强了对分区表的维护功能,例如ALTER TABLE和OPTIMIZE TABLE命令可以更快地完成对分区表的重构和优化。这对于数据量庞大的系统来说尤其关键,因为它允许在不影响业务运行的情况下...
- 提供了对MySQL表分区的操作接口,包括创建、追加和删除分区。 - 追加分区意味着可以在表已经存在分区的基础上增加新的分区,适应不断增长的数据。 - 创建分区时,可以根据业务需求设置分区条件,如日期范围、...
#### 一、MySQL分区概述与应用场景 在当今互联网行业中,MySQL数据库作为最常用的关系型数据库之一,在数据管理方面扮演着极其重要的角色。随着数据量的不断增长,对数据库性能的要求也日益提高。为了提高查询效率...
MySQL数据库分区技术,解决多并发问题,详细描述分区流程及操作步骤
MySQL分区是数据库管理系统MySQL中的一种数据存储管理技术,它允许用户将数据表拆分成多个较小的、更容易管理的片段。这些片段被称为分区。通过这种技术可以提高数据库的性能,便于维护和备份,并且可以对不同分区...
### MySQL分区资源整理 #### 一、分区概念与优势 MySQL中的分区技术是数据库优化的重要手段之一,尤其适用于处理大规模数据集。通过分区,数据库能够将一个庞大的表拆分为若干个小部分,使得管理和操作变得更加...
MySQL分区管理工具是一种优化数据库性能的技术,它将大型表分解为更小、更易管理的部分,以提高查询效率和数据管理的便利性。在MySQL中,分区主要基于表的数据,根据预定义的规则将数据分布到不同的物理部分。这样...
在本篇文章中,我们将讨论如何在MySQL中对已存在的表进行分区操作,特别是新增分区。 首先,尝试直接通过`ALTER TABLE`语句添加分区到非分区表会导致错误,MySQL会返回`ERROR 1505 <HY000>: Partition management ...
#### MySQL分区类型 MySQL支持多种类型的分区方式,主要包括: - **水平分区(Horizontal Partitioning)**:根据行数据进行划分,将不同的行分配到不同的分区中。例如,可以通过某一列值的范围来决定行数据属于...
MySQL 的分区操作可能需要锁定表。 - 在分区维护方面,Oracle 提供了更多的工具和功能,如 Partitioning Advisor,可以帮助优化分区策略。 总的来说,Oracle 的分区功能更为强大,提供了更丰富的分区策略和组合...
mysql分区有利于管理非常大的表,mysql分区一共有四种类型,range分区,list分区, hash分区,key分区,我们通过Navicat 可视化工具来分区 1、打开Navicat 找到指定的数据库,设计表 2、打开设计表选择选项,下面有...
在Zabbix 3.2之前的版本,可能需要先更改`history_text`和`history_log`表的索引结构,以支持后续的分区操作。以下是更改索引的示例: ```sql Alter table history_text drop primary key, add index (id), drop ...