mysql 不同分区 同时insert_Mysql分区表的原理和优缺点

分区表的原理

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

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

select查询:

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

insert操作:

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

delete操作:

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

update操作:

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

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

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

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

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

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

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

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

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

分区本身也有一些限制:

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

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

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

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

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

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

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

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.

a4a98ec4a4d41fc5caa6eb9fa50d9995.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大理三塔,及崇圣寺里的假深沉

大理三塔,及崇圣寺里的假深沉 记得我第一次看见三塔时,是一副破败不堪的景象。而第二次来大理时,因为“崇圣寺”正在修葺,只能远远地眺望一下三塔。那时我对大理失望极了。 现在三塔修缮一新,给人耳目一新的感觉。 三塔…

WCF三种通信模式(转)

一、概述 WCF在通信过程中有三种模式:请求与答复、单向、双工通信。以下我们一一介绍。 二、请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务端有了答复后才能…

第一个程序,Hello World

在eclipse里新建一个project,选Android-Android Project 然后Next,继续 解释一下 Package Name:这个学过编程的人都应该熟悉了,类似于namespace,你定义的所有东西都在一个包里不会和别的包出现重命名的问题等等,不多说…

Hadoop2.6集群动态添加和删除数据节点

2019独角兽企业重金招聘Python工程师标准>>> 开始之前,应该把所有新增数据节点上的Hadoop环境都配置好(如果要直接复制已经存在节点的hadoop文件夹,应该删掉里面已经产生的集群数据,比如tmp和data目录,不然…

拉取ftp服务器上的文件_winscp和云服务器,2步实现winscp将文件上传到腾讯云Linux云服务器...

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议,它的主要功能就是在本地与远程计算机间安全的复制文件。与使用FTP上传代码相比,通过WinSCP可以直接使用服务器账户密码访问云服务器,无需在服务器端做任何配置。II…

笔记:设计模式(3)-Abstract Factory抽象工厂模式

工厂模式的起源 1.变化点在“对象的创建”,因此就封装“对象创建”; 2.面向接口编程,依赖接口,而非依赖实现。 动机(Motivation) 在系统中,经常面临着“一系列相互以来的对象”的创建工作&#…

MongoDB操作:insert()

2019独角兽企业重金招聘Python工程师标准>>> Override public boolean inSert(String dbName, String collectionName, String[] keys,Object[] values) { DB db null; DBCollection dbCollection null; WriteResult result null; String resul…

最近处理的几个小问题_20160311

最近处理的小问题很多,我就拿出来几个,简单和大家说一说。我就分为三个方面,硬件问题,Oracle表空间迁移,MySQL断电恢复首先是硬件问题。如果看到下面的系统日志,就会发现早在2014年就出现了一些警告和问题&…

3. 什么是icmp?icmp与ip的关系_你知道如何跟女生,确定恋人关系吗?

哈喽!同学你好!我是子伯,是一名情感咨询。今天我想给你分享,和女生再暧昧期,如何去确定关系,因为......在我做咨询当中,有很多男生跟女生,不管是在聊天上,还是在线下的交…

量子计算机完整的图片,记者带你走近世界首台超越早期经典计算机的光量子计算机(组图)...

在光学体系方面,研究团队在去年首次实现十光子纠缠操纵的基础上,利用高品质量子点单光子源构建了世界首台超越早期经典计算机的单光子量子计算机。图为基于单光子的量子计算原型机结构。潘建伟教授供图据了解,多粒子纠缠的操纵作为量子计算的…

漂浮的表单

代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Typ…

计算机word文档无法工作,电脑docx打不开怎么办(word文档无法打开的解决方法)...

我们在日常工作的时候&#xff0c;经常都会遇到这样子的一个问题&#xff0c;那也就是Word文件无法的现象。当我们的工作时间又非常的紧迫&#xff0c;那么个时候该怎么办呢&#xff1f;稳住&#xff0c;别慌&#xff0c;今天小编就来和大家一起探讨一下Word无法打开的解决方法…

LinkedList剖析

第1部分 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 Doubly-linked list implementation of the List and Deque interfaces. Implements all optional list operations, and per…

powerdesigner怎么导出pdf_各种科研绘图软件中的矢量图导出技巧

引言科技论文常含有插图&#xff0c;借助插图来形象直观、简明扼要地表达所要表述的内容(梁福军. 科技论文规范写作与编辑[M]. 清华大学出版社, 2014.)。科研绘图软件有很多种&#xff0c;而软件导出的图片可以分为矢量图&#xff08;vector&#xff09;和位图&#xff08;bitm…

Typesafe公司正式更名为Lightbend公司

Scala编程语言的发明者&#xff1a;Typesafe公司&#xff0c;已经完成他们的更名计划&#xff0c;改名后成为Lightbend公司。Typesafe公司在去年五月就宣布了他们的更名计划&#xff0c;从那时起&#xff0c;他们希望可以在两个月内完成改名相关事宜。Typesafe公司邀请了社区的…

理解Javascript_12_执行模型浅析

大家有没有想过&#xff0c;一段javascript脚本从载入浏览器到显示执行都经过了哪些流程&#xff0c;其执行次序又是如何。本篇博文将引出javascript执行模型的概念&#xff0c;并带领大家理解javascript在执行时的处理机制。 简单的开始 简单的代码&#xff1a; <script ty…

怎么制作铁闸门_“短笛”拿铁,最近的心头好!

其实花式咖啡除了市面上一些常见的款式外&#xff0c;还有一些是不常见又好喝的&#xff01;今天来给大家推荐一款“短笛”拿铁&#xff0c;最近的最爱&#xff01;什么是短笛拿铁&#xff1f;piccolo latte&#xff0c;在意大利文中“piccolo”是小的意思&#xff0c;而latte则…

SQL Server 2016 RC0 安装(超多图)

微软最新版本的数据库SQL Server 2016在2016年3月9日推出了RC0版本。已经提供了包括简体中文等多种语言版本&#xff0c;不过联机丛书还是英文版的。对OS的要求是WIN8&#xff0c;WIN10&#xff0c; WIN2012&#xff0c;只有64位版本。让我们下载最新的版本安装测试下。Figure-…

vfp赋值超过7位出错_JDK1.7下的HashMap的源码分析

源码分析jdk1.7下的HashMap我们都知道1.7版本的hashmap的底层是数组加链表构成的&#xff0c;那么今天我们就来自己分析一波源码~篇幅有点长&#xff0c;废话不多说&#xff0c;直接开始分析~「属性声明」//初始化容量 static final int DEFAULT_INITIAL_CAPACITY 1 <4;…

笔记本打开计算机盘非常慢,笔记本开机慢怎么办【方法步骤】

许多人多余学术研究或是体育项目之类是十分精通&#xff0c;白手起家&#xff0c;闯出一片事业的也不在少数&#xff0c;但是在面对 高科 技产品时确实碰到了一鼻子灰&#xff0c;确实&#xff0c;各位读者朋友们所精通专业不同&#xff0c;在加上原本科技产品就是一大难题&…