MySQL 分区表详解

本文基因MySQL5.6版本,希望给MySQL分区一个完整详细的说明


在开始介绍分区表之前,先要确定一下数据库是否开启了分区,分区功能是一个MySQL插件,所以查看是否开启分区功能,可以在mysql下执行命令:SHOW  PLUGINGS;查看


执行语句:

mysql> SHOW PLUGINS;

mysql> SHOW PLUGINS;
+------------+----------+----------------+---------+---------+
| Name       | Status   | Type           | Library | License |
+------------+----------+----------------+---------+---------+
| binlog     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| partition  | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| ARCHIVE    | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| BLACKHOLE  | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| CSV        | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| FEDERATED  | DISABLED | STORAGE ENGINE | NULL    | GPL     |
| MEMORY     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| InnoDB     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| MRG_MYISAM | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| MyISAM     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| ndbcluster | DISABLED | STORAGE ENGINE | NULL    | GPL     |
+------------+----------+----------------+---------+---------+
11 rows in set (0.00 sec)
看到上面红色的一行,就说明分区功能已经开启。


除了以上方法,还可以通过查询 INFORMATION_SCHEMA.PLUGINS 表检查是否开启分区功能,例如:


mysql> SELECT 
    ->     PLUGIN_NAME as Name, 
    ->     PLUGIN_VERSION as Version, 
    ->     PLUGIN_STATUS as Status 
    -> FROM INFORMATION_SCHEMA.PLUGINS 
    -> WHERE PLUGIN_TYPE='STORAGE ENGINE';
+--------------------+---------+--------+
| Name               | Version | Status |
+--------------------+---------+--------+
| binlog             | 1.0     | ACTIVE |
| CSV                | 1.0     | ACTIVE |
| MEMORY             | 1.0     | ACTIVE |
| MRG_MYISAM         | 1.0     | ACTIVE |
| MyISAM             | 1.0     | ACTIVE |
| PERFORMANCE_SCHEMA | 0.1     | ACTIVE |
| BLACKHOLE          | 1.0     | ACTIVE |
| ARCHIVE            | 3.0     | ACTIVE |
| InnoDB             | 5.6     | ACTIVE |
| partition          | 1.0     | ACTIVE |
+--------------------+---------+--------+
10 rows in set (0.00 sec)

如果很不幸你的MySQL不支持分区(一般都支持),那最可能的原因是你是用源代码编译安装的。要使用分区功能,编译时必须使用 - DWITH_PARTITION_STORAGE_ENGINE 选项。 二进制安装不存在此问题,分区功能是默认的,无须在my.cnf中进行任何额外配置。


好了,现在我们进入主题,先说说什么是分区表。通俗的说,分区表就是将一个表的数据,按照我们指定的方式存储分别存储在不同的物理文件中。这样做的好处主要有两点:一也是最主要的是为了查询优化,提高检索性能。二是为了管理方便。

分区分为两种,一种是横向分区,也叫水平分区;另一种是纵向,也叫垂直分区。水平分区指的是按照数据行(ROW)来进行分区,垂直分区指的是按照列(COLUMN)来进行分区。MySQL只支持水平分区,也是实际应用中最多的分区方式。


了解了分区的好处和MySQL分区方式,下面我们就要介绍如何进行分区了,也就是根据我们的需求定义分区类型。


未完待续。。。。。


你可能感兴趣的:(MySQL)