29.笔记 MySQL学习——使用分区表
2017-11-16 20:45
399 查看
29.笔记 MySQL学习——使用分区表
MySQL支持表分区,可以让表的内容分散存储在不同的物理存储位置。
表分区可以有如下好处:
l 表存储分布在多个设备上
l 优化器可以把本地化搜索限定在某个特定的分区
创建分区,要指定PARTITION BY子句
分区函数可以根据范围、值列表或散列值来分配各行
例如:
create table log_partition
( dtdatetime not null,
infovarchar(100) not null,
index(dt)) partition by range(year(dt))
(partition p0 values less than ( 2010),
partitionp1 values less than (2011),
partition p2 values less than (2012),
partitionp3 values less than (2013),
partitionpmax values less than maxvalue
);
Query OK, 0 rows affected (0.03 sec)
当2014年可以继续进行划分
如下:
mysql> alter table log_partition reorganizepartition pmax
-> into(
->partition p4 values less than (2014),
->partition pmax values less than maxvalue
-> );
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table log_partition;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| log_partition | CREATE TABLE`log_partition` (
`dt` datetime NOT NULL,
`info` varchar(100) NOT NULL,
KEY`dt` (`dt`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (year(dt))
(PARTITION p0 VALUES LESS THAN (2010)ENGINE = InnoDB,
PARTITION p1 VALUES LESS THAN (2011) ENGINE =InnoDB,
PARTITION p2 VALUES LESS THAN (2012) ENGINE =InnoDB,
PARTITION p3 VALUES LESS THAN (2013) ENGINE =InnoDB,
PARTITION p4 VALUES LESS THAN (2014) ENGINE =InnoDB,
PARTITION pmax VALUES LESS THAN MAXVALUEENGINE = InnoDB) */ |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
若想将存储分散到其他地方,则需要用到分区选项 DATA_DIRECTORY和INDEX_DIRECTORY。
MySQL支持表分区,可以让表的内容分散存储在不同的物理存储位置。
表分区可以有如下好处:
l 表存储分布在多个设备上
l 优化器可以把本地化搜索限定在某个特定的分区
创建分区,要指定PARTITION BY子句
分区函数可以根据范围、值列表或散列值来分配各行
例如:
create table log_partition
( dtdatetime not null,
infovarchar(100) not null,
index(dt)) partition by range(year(dt))
(partition p0 values less than ( 2010),
partitionp1 values less than (2011),
partition p2 values less than (2012),
partitionp3 values less than (2013),
partitionpmax values less than maxvalue
);
Query OK, 0 rows affected (0.03 sec)
当2014年可以继续进行划分
如下:
mysql> alter table log_partition reorganizepartition pmax
-> into(
->partition p4 values less than (2014),
->partition pmax values less than maxvalue
-> );
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table log_partition;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| log_partition | CREATE TABLE`log_partition` (
`dt` datetime NOT NULL,
`info` varchar(100) NOT NULL,
KEY`dt` (`dt`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (year(dt))
(PARTITION p0 VALUES LESS THAN (2010)ENGINE = InnoDB,
PARTITION p1 VALUES LESS THAN (2011) ENGINE =InnoDB,
PARTITION p2 VALUES LESS THAN (2012) ENGINE =InnoDB,
PARTITION p3 VALUES LESS THAN (2013) ENGINE =InnoDB,
PARTITION p4 VALUES LESS THAN (2014) ENGINE =InnoDB,
PARTITION pmax VALUES LESS THAN MAXVALUEENGINE = InnoDB) */ |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
若想将存储分散到其他地方,则需要用到分区选项 DATA_DIRECTORY和INDEX_DIRECTORY。
相关文章推荐
- 在MySQL中使用SQL 【数据库高效编程 - 学习笔记 第四章】
- mysql学习笔记(1):mysql命令行的使用
- MySQL学习笔记之一:数据库基础理论及客户端工具的使用
- OpenLayers学习笔记8——使用servlet从mysql获取数据并标注
- mysql学习笔记(window下简单使用+Navict)
- MySQL学习笔记之十六 使用MySQL内建复制功能
- MySQL学习笔记(1):MySQL命令行的使用
- mysql学习笔记(sqlalchemy安装及简单使用)
- python学习笔记29(python中堆的使用)
- Mycat学习笔记 番外篇一.客户端使用latin1字符集,后端MySQL为UTF8字符集,MyCat日志分析。
- ubuntu playframework 使用 ebean 连接 MySQL 学习笔记
- MYSQL学习笔记(5)配置:使用选项文件
- python学习笔记29(python中堆的使用)
- MySQL学习笔记--触发器的创建与删除及使用注意事项
- python2学习笔记之mysql连接,中文乱码的解决和文件api的使用
- 学习笔记--mysql索引(一) 索引使用,index,key,primary key, unique
- C#学习笔记29——c#使用word、excel、pdf
- MySQL学习笔记之十:使用mysql-proxy实现MySQL读写分离
- Java学习笔记——MySQL的安装使用以及SQL语法简介
- MySQL5.6.17学习笔记(三)基本分区表