本文基因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分区方式,下面我们就要介绍如何进行分区了,也就是根据我们的需求定义分区类型。
未完待续。。。。。