ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql数据分区

2022-03-03 23:31:39  阅读:186  来源: 互联网

标签:存储 分区 支持 切分 mysql 数据 数据库


1.表分区基本概念

什么是表分区?
    表分区mysql自带的数据切分技术,根据一定的规则把存放数据的文件分成了许多小块,存储在磁盘中不同区域。
    通过提升磁盘io能力,来加快查询的速度,表分区可以让mysql单表保存更多的数据,提升查询性能。
    分区不会更改数据表的机构,发生变化的只是存储方式而已,从逻辑上看就是一张表,但是底层是多个物理分区组成的。
    
        
    分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。

    分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。
    但是并不是所有的存储引擎都支持,如CSV、FEDORATED、MERGE等就不支持分区。在使用此分区功能前,应该对选择的存储引擎对分区的支持有所了解。

    MySQL数据库在5.1版本时添加了对分区的支持,分区的过程是将一个表或索引分解为多个更小、更可管理的部分。
    就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。
    每个分区都是独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。

    MySQL数据库支持的分区类型为水平分区(指将同一个表中不同行的记录分配到不同的物理文件中),并不支持垂直分区(指将同一表中不同列的记录分配到不同的物理文件中)。
    此外,MySQL数据库的分区是局部分区索引,一个分区中既存放了数据又存放了索引。
    而全局分区是指,数据存放在各个分区中,但是所有数据的索引放在一个对象中。
    目前,MySQL数据库还不支持全局分区。


表分区的优点:
    1.表分区的数据可以分布在不同的物理设备上,从而高效的利用多个硬件设备
    2.单表可以存储更多的数据
    3.表分区存储在不同的设备上,数据的写入和读取的效率提升了,汇总函数计算速度变快了
    4.不会出现表锁,只会锁住相关的分区
        
表分区的缺点:
    1.不支持存储过程,存储函数和某些特殊的函数
    2.不支持安慰运算符
    3.分区键不能使用子查询,一般使用表连接去替代子查询
    4.创建表分区后,尽量不要修改数据库模式,会让mysql丢失数据

注意:
  每张数据表只能有1024个分区

 2.表分区的切分规则

range分区
    PARTITIONED BY RANGE COLUMNS # 根据连续区间值切分数据
    
list分区
    PARTITION BY LIST COLUMNS # 根据枚举值切分,切分的字段必须是整数
    
hash分区
    PARTITION BY HASH # 对整数值求模分区数据,切分字段必须是整数(主键递增或者根据函数运算的结果是整数)

key分区
    PARTITION BY KEY # 对任何数据类型求模切分数据,字符串类型,日期类型,二进制类型都可以

子分区
    SUBPARTITION BY XXX # 

注意:
    只能按照主键字段来切分数据,如果对主键字段切分数据,那么这个表表只能不设置主键了

 

 

 

pass

标签:存储,分区,支持,切分,mysql,数据,数据库
来源: https://www.cnblogs.com/p0st/p/15962462.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有