【mysql】分区

  1. 分区
    分区就是将数据库或其构成元素划分为不同的独立部分。
    1、分区类型
     
    MySQL 支持多种类型的分区:
    • RANGE:范围应该连续但不重叠,使用 VALUES LESS THAN 运算符进行定义。
    • LIST:像在由 RANGE 进行分区一样,必须显式定义每个分区。
    • HASH:对要插入表中的行的列值进行操作。
    • KEY:与 HASH 类似,不同之处在于仅提供要评估的一个或多个列并且 MySQL 服务器提供散列函数。它适用于所有允许的列类型。
    • COLUMNS:RANGE 和 LIST 分区上的变体。COLUMNS 分区允许在分区键中使用一个或多个列。在以下情况时将考虑所有这些列:将行放入分区中,以及确定将检查哪些分区来匹配分区删改中的行。
    - RANGE COLUMNS 和 LIST COLUMNS 分区支持使用非整数列(以及前面列出的其他数据类型)来定义值范围或列表成员。
    • LINEAR:MySQL 还支持线性散列,其不同于常规散列,线性散列使用线性 2 的幂算法,而常规散列使用散列函数值的模。
     

    2.分区支持

(1)确定服务器分区支持状态
mysql> SHOW PLUGINS\G
 
 

(2)禁用分区支持
shell> mysqld --skip-partition
 
 
 
3、基本分区语法
通过在 CREATE TABLE 语句中使用 PARTITION BY 子句来创建分区表。PARTITION BY 跟在 CREATE TABLE 的所有部分后面:
CREATE TABLE <table_name> (<table_column_options>)
ENGINE=<engine_name>
PARTITION BY <type> (<partition_expression>);
 
 
4、获取分区信息
MySQL 提供了多种方法来确定表的分区状态:
①SHOW CREATE TABLE
查看用于创建分区表的分区子句。
显示用于创建表的语法,包括 PARTITION BY 子句:
show create table orders_range\G
 
 
②SHOW TABLE STATUS
确定表是否进行了分区。
 
 
③INFORMATION_SCHEMA.PARTITIONS
查询 INFORMATION_SCHEMA.PARTITIONS 表。
可以在 INFORMATION_SCHEMA.PARTITIONS 表中查询分区详细信息。
获取所有数据库表及其分区的列表:
 
 
④EXPLAIN PARTITIONS SELECT
显示给定 SELECT 语句使用的分区。
显示 MySQL 处理分区的方式
判断查询将访问哪些分区以及使用这些分区的方式
只能用在包含行数据的表中:
 
 
5、更改分区
(1)重新定义分区类型
将 ALTER TABLE 与 PARTITION BY 配合使用,将分
区类型从 RANGE 更改为 HASH:
 


 
 

(2)删除分区

可以删除一个或多个分区。
RANGE 或 LIST 表允许此操作。
将 ALTER TABLE 与 DROP PARTITION 配合使用:
在此 orders_range 表示例中,已经填充了小于10,000 的所有订单 ID,所以将删除第一个分区:
alter table orders_range drop partition p0;
 
此时查看一下表中的分区p0已经删除
 

部分内容来自:oracle官方中文版mysql dba学习指南

猜你喜欢

转载自blog.csdn.net/qq_42774325/article/details/81781483