本文主要向大家介绍了MySQL数据库之关于mysql分区优缺点、分区表存储引擎设置的介绍 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

mysql 表分区性能提升不大 mysql分区表的优缺点_MySQL

mysql分区

分区是根据一定的规则,数据库把一个表分解成多个更小的,更容易管理的部分。就访问数据库的应用而言,逻辑上只有一个表或是一个索引,但是实际上这个表可能有数10个物理分区对象组成。每个分区都是一个独立的对象,可以独自处理,可以作为表的一部分进行处理。分区对应用来说完全是透明的,不影响应用的业务逻辑。

mysql分区的有优点主要包括4个部分:

和单个磁盘或者文件系统相比,可以存储更多的数据。 优化查询。在where字句中包含分区条件时,可以只扫描必要的一个或是多个分区来提高查询效率;同时在涉及SUM()或是COUNT()这类聚合函数的查询时,可以容易的在每个分区上进行并行处理,最终只需要汇总所有分区得到的结果。 对于已经过期,或者不需要保存的数据,可以通过删除与这些数据有关的的分区来快速删除数据。 跨多个磁盘来分散数据查询,以获得更大的查询吞吐量。

分区键

分区有利于管理非常大的表,它采用了‘分而治之’的逻辑,分区引入了分区键(partition key)的概念,分区键用于根据某个区间值(或者范围值)、特定值列表或者hash函数值执行数据的聚集,让数据根据分布规则分布在不同的分区中,让一个大对象变成一些小对象。

查询当前的mysql是否支持分区:

查询当前版本是否安装了分区插件:

Mysql支持使用大部分存储引擎(比如 myisam,innodb,memory等存储引擎)创建分区表;Mysql不支持使用MERGE或是CSV存储引擎来创建分区表;同一个分区表的所有分区必须使用同一个存储引擎,不同的分区表可以使用不同的存储引擎。

分区表存储引擎设置:

和非分区表设置存储引擎一样,分区表设置存储引擎,只能用【STORAGE】ENGINE子句。但是【STORAGE】ENGINE子句必须列在 CREATE TABLE语句中的其他任何分区选项之前。

例如:下面的例子创建了一个使用INNODB引擎并有6个HASH分区的表:

注意:MySQL的分区适用于一个表的所有数据和索引,不能只对表数据分区而不对索引分区;反过来也是一样的,不能只对索引分区而不对表分区,同时也不能只对表的一部分数据进行分区,MySQL的分区表上创建的索引一定是本地LOCAL索引。

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!