最新文章:

首页 数据库

MYSQL表分区介绍

发布时间:2018年11月20日 评论数:1 阅读数:3030

    当数据库数据量涨到一定数量时,如何优化呢? 

    1.分区,所有的数据还在一个表中,但物理存储数据根据一定的规则存放在不同的文件中,文件也可以放到不同的磁盘上

    优点:代码维护量小,基本不用改动,提高I/O吞吐量

    缺点:表的并发程度没有增加

    什么是表分区

    通俗地讲表分区是将一大表,根据条件分割成若干个小表。MySQL5.1开始支持数据表分区了。分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。程序读写的时候操作的还是大表名字,MySQL服务器自动去组织分区的数据。

    表分区的优缺点

    优点:

    分区表的数据更容易维护,如:想批量删除大量数据可以使用清除整个分区的方式。另外,还可以对一个独立分区进行优化、检查、修复等操作

    分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备

    可以使用分区表来避免某些特殊的瓶颈,如:innodb的单个索引的互斥访问,ext3文件系统的inode锁竞争等

    如果需要,还可以备份和恢复独立的分区,这在非常大的数据集的场景下效果非常好

    优化查询,在where字句中包含分区列时,可以只使用必要的分区来提高查询效率,同时在涉及sum()和count()这类聚合函数的查询时,可以在每个分区上面并行处理,最终只需要汇总所有分区得到的结果。

    缺点:

    一个表最多只能有1024个分区(MySQL5.6之后支持8192个分区)

    在MySQL5.1中分区表达式必须是整数,或者是返回整数的表达式,在5.5之后,某些场景可以直接使用字符串列和日期类型列来进行分区(使用varchar字符串类型列时,一般还是字符串的日期作为分区)。

    如果分区字段中有主键或者唯一索引列,那么所有主键列和唯一索引列都必须包含进来,如果表中有主键或唯一索引,那么分区键必须是主键或唯一索引

    分区表中无法使用外键约束

    MySQL数据库支持的分区类型为水平分区,并不支持垂直分区,因此,MySQL数据库的分区中索引是局部分区索引,一个分区中既存放了数据又存放了索引,而全局分区是指的数据库放在各个分区中,但是所有的数据的索引放在另外一个对象中

    目前MySQL不支持空间类型和临时表类型进行分区。不支持全文索引

    四、分区表的类型介绍及简单使用

    在MySQL中使用分区表前,需要看你的数据库是否支持,查看的命令为:

    mysql> show plugins;

    有上图中框选的行即表示MySQL支持表分区

    MySQL支持5种分区方式:RANGE分区、LIST分区、HASH分区、LINEAR HASH分区和KEY分区。每种分区都有自己的使用场景。


二维码加载中...
本文作者:Mr.linus      文章标题: MYSQL表分区介绍
本文地址:http://www.90qj.com/525.html  本文已经被百度收录,点击查看详情
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
kk
kk2021-01-11 15:58回复
#1
表分区不会讲一个表分成N个小表吧?而是将数据存储的分成了多个块!