MySQL分区简介数据库分区数据库分区是一种物理数据库设计技术。其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是透明的。 分区的作用数据库性能的提升和简化数据管理,在扫描操作中MySQL优化器只扫描数据的那个分区以减少扫描范围获得性能的提高。分区技术使得数据管理变得简单,删除某个分区不会对另外的分区造成影响。MySQL从5.1版本开始支持分区,同个表中的分区表名称要唯一 MYSQL的分区形式主要有两种形式:水平分区和垂直分区 水平分区这种形式的分区是根据表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。水平分区一定要通过某个属性列来分割。常见的比如年份,日期等。 垂直分区(VerticalPartitioning)这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应所有行。 可以用 show variables like '%parts%' 命令查询当前的MySQL数据库版本是否支持分区。 MySQL分区类型现详细介绍下水平分区。水平分区根据所使用的不同分区规则可以分成几大分区类型。
创建分区表创建range分区
以价格为依据做范围分区,这里最值得注意的是表达式必须有返回值。 创建list分区
以分类作为分区依据,每个分类做一分区。 创建hash分区HASH分区主要用来确保数据在预先确定数目的分区中平均分布。在RANGE和LIST分区中,必须明确指定一个给定的列值或列值集合应该保存在哪 个分区中;而在HASH分区中,MySQL 自动完成这些工作,你所要做的只是为将要被哈希的列值指定一个列值或表达式,以及指定被分区的表将要被分割成的分区数量。
创建key分区按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用户定义的表达式,而KEY分区的哈希函数是由MySQL 服务器提供。KEY分区只采用一个或多个列名。
创建复合分区range - hash(范围哈希)复合分区
range- key复合分区
list-hash复合分区
list - key 复合分区
分区表的管理操作分区操作 查看分区表
删除分区 (不可以删除hash或者key分区)
增加分区
拆分分区reorganize partition关键字可以对表的部分分区或全部分区进行修改,并且不会丢失数据。分解前后分区的整体范围应该一致。
合并分区
重新定义分区表
删除表的所有分区
重建分区这和先删除保存在分区中的所有记录,然后重新插入它们,具有同样的效果。它可用于整理分区碎片。
分析分区优化分区如果从分区中删除了大量的行,或者对一个带有可变长度的行(也就是说,有VARCHAR,BLOB,或TEXT类型的列)作了许多修改,可以使用“ALTER TABLE ... OPTIMIZE PARTITION”来收回没有使用的空间,并整理分区数据文件的碎片。
分析分区读取并保存分区的键分布。
修补分区修补被破坏的分区
检查分区可以使用几乎与对非分区表使用CHECK TABLE 相同的方式检查分区。
这个命令可以告诉你表cxy7_user_3的分区p2中的数据或索引是否已经被破坏。如果发生了这种情况,使用“ALTER TABLE ... REPAIR PARTITION”来修补该分区。 MySQL分区表的局限性
获取MySQL分区表信息的几种方法show create table 表名可以查看创建分区表的create语句 show table status 可以查看表是不是分区表
查看information_schema.partitions表
可以查看表具有哪几个分区、分区的方法、分区中数据的记录数等信息 explain partitions select语句
通过此语句来显示扫描哪些分区,及他们是如何使用的. |