iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL分区表的分区原理及优缺点
  • 404
分享到

MySQL分区表的分区原理及优缺点

2024-04-02 19:04:59 404人浏览 独家记忆
摘要

这篇文章主要介绍“Mysql分区表的分区原理及优缺点”,在日常操作中,相信很多人在mysql分区表的分区原理及优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql分

这篇文章主要介绍“Mysql分区表的分区原理及优缺点”,在日常操作中,相信很多人在mysql分区表的分区原理及优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql分区表的分区原理及优缺点”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.分区表的原理

分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个相同的索引,从存储引擎的角度来看,底层表和一个普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。

在分区表上的操作按照下面的操作逻辑进行:


select查询:


当查询一个分区表的时候,分区层先打开并住所有的底层表,优化器判断是否可以过滤部分分区,然后再调用对应的存储引擎接口访问各个分区的数据


insert操作:


当写入一条记录时,分区层打开并锁住所有的底层表,然后确定哪个分区接受这条记录,再将记录写入对应的底层表


delete操作:


当删除一条记录时,分区层先打开并锁住所有的底层表,然后确定数据对应的分区,最后对相应底层表进行删除操作


update操作:


当更新一条数据时,分区层先打开并锁住所有的底层表,mysql先确定需要更新的记录在哪个分区,然后取出数据并更新,再判断更新后的数据应该放在哪个分区,然后对底层表进行写入操作,并对原数据所在的底层表进行删除操作


虽然每个操作都会打开并锁住所有的底层表,但这并不是说分区表在处理过程中是锁住全表的,如果存储引擎能够自己实现行级锁,如:innodb,则会在分区层释放对应的表锁,这个加锁和解锁过程与普通Innodb上的查询类似。


2.在下面的场景中,分区可以起到非常大的作用:


A:表非常大以至于无法全部都放在内存中,或者只在表的最后部分有热点数据,其他都是历史数据


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


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


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


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


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


3.分区本身也有一些限制:


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


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


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


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

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


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


4.子分区的建立需要注意以下几个问题:


A:每个子分区的数量必须相同


B:只要在一个分区表的任何分区上使用subpartition来明确定义任何子分区,就必须在所有分区上定义子分区,不能漏掉一些分区不进行子分区。


C:每个subpartition子句必须包括子分区的一个名字


D:子分区的名字必须是唯一的,不能在一张表中出现重名的子分区


E:mysql数据库的分区总是把null当作比任何非null更小的值,这和数据库中处理null值的order by操作是一样的,升序排序时null总是在最前面,因此对于不同的分区类型,mysql数据库对于null的处理也各不相同。对于range分区,如果向分区列插入了null,则mysql数据库会将该值放入最左边的分区,注意,如果删除分区,分区下的所有内容都从磁盘中删掉了,null所在分区被删除,null值也就跟着被删除了。在list分区下要使用null,则必须显式地定义在分区的散列值中,否则插入null时会报错。hash和key分区对于null的处理方式和range,list分区不一样,任何分区函数都会将null返回为0.

到此,关于“MySQL分区表的分区原理及优缺点”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL分区表的分区原理及优缺点

本文链接: https://www.lsjlt.com/news/60986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL分区表的分区原理及优缺点
    这篇文章主要介绍“MySQL分区表的分区原理及优缺点”,在日常操作中,相信很多人在MySQL分区表的分区原理及优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL分...
    99+
    2024-04-02
  • oracle分区表的优缺点及用法
    本篇内容介绍了“oracle分区表的优缺点及用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!I 分区表的...
    99+
    2024-04-02
  • mysql表分区有什么优缺点
    本篇文章为大家展示了mysql表分区有什么优缺点,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、优点可以让单表存储更多的数据。分区表的数据更容易维护,可以通过整个隔断批量删除大量数据,也可以增加新...
    99+
    2023-06-15
  • MySQL表分区的优缺点有哪些
    MySQL表分区的优点包括:1. 提高查询性能:通过将数据分散存储在多个分区中,可以实现更快的查询性能。当查询仅涉及到一个或几个分区...
    99+
    2023-10-12
    mysql
  • Oracle表分区的优缺点是什么
    Oracle表分区的优缺点是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。(1.) 表空间及分区表的概念表空间:  是一个或多个数据文件的...
    99+
    2024-04-02
  • MySQL分区表原理的示例分析
    这篇文章主要为大家展示了“MySQL分区表原理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL分区表原理的示例分析”这篇文章吧。1、分区表含义...
    99+
    2024-04-02
  • Ajax原理及优缺点的示例分析
    这篇文章主要为大家展示了“Ajax原理及优缺点的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax原理及优缺点的示例分析”这篇文章吧。1、ajax技...
    99+
    2024-04-02
  • linux的lvm分区有什么优缺点
    这篇文章主要讲解了“linux的lvm分区有什么优缺点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux的lvm分区有什么优缺点”吧! ...
    99+
    2023-03-24
    linux lvm
  • SQLite与MySQL区别及优缺点介绍
    简单来说,SQLITE功能简约,小型化,追求最大磁盘效率;MYSQL功能全面,综合化,追求最大并发效率。如果只是单机上用的,数据量不是很大,需要方便移植或者需要频繁读/写磁盘文件的话...
    99+
    2024-04-02
  • Ajax工作原理及优缺点的示例分析
    这篇文章将为大家详细讲解有关Ajax工作原理及优缺点的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.Ajax是什么?全称是 asynchronous javascript and xml,是已...
    99+
    2023-06-08
  • mysql分区表:日期分区
    mysql分区表:日期分区 1.创建分区表2.查看分区3.添加分区4.存储过程:分区删除与创建5.事件定时6.触发器设计:子表每插入一行,总表获得一行7.创建索引8.添加枚举型字段 1.创建分区表 CREATE TAB...
    99+
    2023-08-21
    mysql 数据库
  • sqlserver表分区的优点有哪些
    SQL Server表分区的优点包括: 提高查询性能:通过将表分成多个分区,可以根据需要在不同的分区上执行查询,从而提高查询性能...
    99+
    2024-04-20
    sqlserver
  • MySql的分表分库分片以及分区是怎样的
    今天就跟大家聊聊有关MySql的分表分库分片以及分区是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、前言数据库的数据量达到一定程度之后,为...
    99+
    2024-04-02
  • mysql表分区的使用与底层原理详解
    目录什么是分区表 分区表应用场景 分区表的限制 分区类型 分区表的使用 1、范围分区 2、列表分区(list分区) 3、列分区 4、hash分区 5、秘钥分区(key分区) 6、子分...
    99+
    2024-04-02
  • Linux的优缺点以及和windows的区别
    这篇文章主要介绍“Linux的优缺点以及和windows的区别”,在日常操作中,相信很多人在Linux的优缺点以及和windows的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的优缺点以及和w...
    99+
    2023-06-04
  • mysql分表分区的示例分析
    这篇文章给大家介绍mysql分表分区的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗...
    99+
    2024-04-02
  • MySQL分区表有哪些知识点
    本篇内容介绍了“MySQL分区表有哪些知识点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MySQL分区表...
    99+
    2024-04-02
  • vue和react的区别及优缺点解读
    目录vue和react的区别及优缺点共同点不同点react和vue哪个比较受欢迎,以后主流应该是哪个方向?Vue和React那个更好?为什么react还比vue火总结vue和reac...
    99+
    2023-03-06
    vue和react区别 vue和react优缺点 vue和react
  • mysql中分表与分区的区别是什么
    这篇文章将为大家详细讲解有关mysql中分表与分区的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一,什么是mysql分表,分区什么是分表,从表面...
    99+
    2024-04-02
  • MySQL性能调优之分区表的知识点有哪些
    本篇内容主要讲解“MySQL性能调优之分区表的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL性能调优之分区表的知识点有哪些”吧!对于用户而...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作