oracle拆分分区语法详解大全_Oracle hash的分区方法详解

hash的原理虽然简单,但是它在数据库中可以说是无处不在。其中hash partition是hash在数据库中一个简单的应用,虽然它没有range partition那么常用,但是我们在做数据库水平拆分时,其实就是利用了hash partition的原理,利用hash函数对某个key进行运算,然后将其分布到不同的主机上,原理很简单。

我们在设计时遇到了一个问题,当分区的数量需要变化时,基于hash的原理,数据可能会从一个分区移动到另外一个分区,因为某个key在4个分区时,可能被分布在分区3,而在8个分区时,可能被分布在分区5。这样每当分区数量变化时,就需要全部重新分布数据,代价很高。

那么Oracle是怎么做的?首先可以肯定的是Oracle的hash partition在分区增加时,不需要做全部数据的重新分布。有人告诉我Oracle的hash函数比较牛,可以保证分区数量增加时,这个hash函数可以让原来的数据还在旧的分区中,而新的数据可以分布在新的分区。Oracle的函数无非就是get_hash_value或ora_hash(10g),从hash的原理上来说,这也是不可能做到的。

我们对hash partition都有一个常识,就是partition的数量最好是2的次方,也就是2,4,8,16……,否则分区会出现不分区均衡的现象,按照hash的原理,不管是几个分区,都可以做到完全均衡的,为什么会不均衡,其实答案已经出来了,Oracle为了能够增加分区,为你预留了几个看不到的分区。

假设我们有6个分区,一共8000条数据,数据的分布如下图:

hash partition不能直接增加分区,而是split当前分区,当需要增加到8个分区时,实际上是分区3和分区4分别split产生新的分区7和分区8,如下图:

Oracle如何做到分区数量增加后,其他分区的数据不受影响呢,其实很简单,Oracle在做hash运算时,预留了分区,比如6个分区,实际上是用8个分区的hash来运算的,只不过把缺少的分区的数据合并到其他分区,这样就会出现数据不均衡的情况。Oracle的公式是这样的,用等于或者大于当前分区数量的最小的一个2的N次方,比如6个分区做8个hash bucket。我们再来考虑一下2,4,8,16(2的N次方)的情况,比如要把4个分区加为5个分区,因为已经是2的N次方,所以数据会均匀分布,而且Oracle还是使用4个hash bucket。这时新增的分区5实际上把分区1 split后产生的,这时因为有5个分区了,所以会使用8个hash bucket。这时Oracle的hash函数就比较牛了,它可以保证2,4,8,16个分区时,同一个键值分布在相同的分区或者是对应可以合并的分区,看下面的SQL:

select ora_hash(’hellodba’,1)+1 par2,ora_hash(’hellodba’,3)+1 par4,ora_hash(’hellodba’,7)+1 par8,ora_hash(’hellodba’,15)+1 par16 from dual;

PAR2 PAR4 PAR8 PAR16

---------- ---------- ---------- ----------

2 4 4 12上面的SQL我们看到分区的数量在2,4,8,16时,hellodba这个key分别落在在2,4,4,12号分区,虽然落在不同的分区上,但是分区4和分区12是对应可合并的,这样就保证了数据是不需要移动的。一句话总结就是hash bucket总是2的N次方,如果分区数不足,则会合并数据,产生不均衡的情况,这样增加分区时,只需要对应分区的数据做split即可。同理,减少分区也不是简单的drop,而是合并分区。

再回到我们的项目中,我们为了解决这个问题,采用了更简单的处理方案,直接就做了1024个分区,我们有8个物理数据库,每个数据库中有128个表,以后再分拆时,只要移动这些表,并修改应用中的对应关系就可以了。其实和Oracle合并再拆分的思路是一样的。

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

文章转载自:网络转载

0

好文不易,鼓励一下吧!

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

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

相关文章

计算机专业的吸引力,计算机专业文献翻译-面向对象编程具有多方面的吸引力.doc...

英文文摘Why has object-oriented programming had such a sweeping impact on the software development communityObject-oriented programming appeals at multiple levels. For managers, it promises faster and cheaper development and maintenance. For analysts and d…

ML.NET生成器带来了许多错误修复和增强功能以及新功能

ML.NET是一个开源的跨平台机器学习框架,适合 .NET 开发人员。它允许将机器学习集成到 .NET 应用中,而无需离开 .NET 生态系统,甚至拥有 ML 或数据科学背景。ML.NET工具(Visual Studio 中的 UI 模型生成器和跨平台 ML.NET CLI&…

yolo算法的优缺点分析_yolo算法介绍

yolo算法介绍(2020-06-06 16:49:28)把Yolo模型搞清楚后不得不再次为人类的智慧感慨,一个巧妙的模型。要想理解Yolo我们先要搞清楚Yolo到底要解决一个什么问题,解决这个问题必须做哪些事情。Yolo属于多目标检测,因此需要解决两个问题&#xff…

Flash 生命终止,HTML5能否完美替代?

Adobe 对 Flash Player 的支持计划在今天,也就是 2020 年 12 月 31 日终止。Windows 计算机上最新版本的 Flash Player 已经开始弹出生命周期终止提示窗口。提示中指出,为了保护用户系统,Adobe 将在 2021 年 1 月 12 日开始禁止 Flash 内容在…

14考研计算机考前,计算机专业考研考前终极预测试题.docx

PAGE \* MERGEFORMAT #PAGE \* MERGEFORMAT #真理惟一可靠的标准就是永远自相符合计算机专业考研考前终极预测试题一?p单项选择题:1~40小题,每小题2分,共80分。在每小题给出的四个 选项中,请选出一项最符合题目要求的。1若某线性…

typora公式zuo对齐_Markdown编辑神器-Typora

Markdown For Typora Overview Markdown is created by Daring Fireball, the original guideline is here. Its syntax, however, varies between different parsers or editors. Typora is using [GitHub Flavored Markdown][GFM]. 注:Markdown语法与知乎不能完全兼容,显示…

使用 ML.NET 识别乐高颜色块

每一个乐高迷都拥有很多的颜色块,需要进行排序和按类型分拣,按照《Organizing your LEGO Bricks》或许有所帮助,但这不是一个简单的任务,因为有很多颜色块有非常微妙的差异。如果换作一个典型的程序员可以做什么来解决这个问题呢&…

维修计算机机房管理员职责,机房管理员岗位职责

机房管理员在现代教育技术中心主任的领导下,负责学生机房的规划建设和日常管理工作。具体履行以下职责:一、树立一切以教学为中心的服务意识,加强与教师之间的联系,注重业务学习,不断提高业务技能。二、掌握计算机操作…

ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解

原文:juejin.im/post/5cffa528e51d4556da53d091一、引言当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化三个步骤对该类进行类加载。二、类的加载、链接、初始化1、加载类加载指的是将类的class文件读入内存&a…

写给自己,2020的年终总结

大概从2017年起,每年在博客园写一篇博客回顾自己过去的一年已经成为我的一种习惯,今年也同样毫不例外。不过与往年相比,总归还是受拖延症的影响,在公历年即将过去才开始动手敲下第一行文字。如果要给自己的2020年年终总结列一个篇…

2021福建计算机会考操作题,2021年福建省信息技术会考笔试试题答案.doc

.6信息技术基础(必修)选择题(共50题,每题1分,每题只有一个正确答案)1.下列相关信息叙述,不正确是A.信息无处不在,但并不一定全部是真实B.信息能够被存放和传输C.信息价值完全取决于信…

unity中单位是米还是厘米_【一步数学】小学数学单位换算公式大全及专项训练...

重量单位换算1吨1000千克 1吨1000 000克吨:吨是重量单位,公制一吨等于1000公斤:计算船只容积的单位,一吨等于2.83立方米(合100立方英尺)。1千克1000克 500克1斤千克:克,(符号kg或㎏)…

起点低,是彪悍的最好证明!

阅读本文大概需要4分钟。一个读者的问题:洋哥,我老家是农村的,只考上了专科,毕业后北漂两年月薪才7000,每天都会很焦虑,想努力但想到自己的过去,又怀疑努力是否有用。和这个读者聊了很久&#x…

量子计算机与新型传感器,新型量子传感器为超导量子计算机发展开辟了新路径...

莫斯科国立科技大学(NUSTMISIS)、俄罗斯量子中心(RQC)、以及德国卡尔斯鲁厄理工学院(KIT)的一支联合研究团队,已经在量子优势研究方面取得了重大的进展。由发表在《npj量子信息》期刊上的研究论文可知,其打造的一款量子传感器,为量子比特中两…

二分法查找是基于有序_201,查找顺序查找

查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,也不需要排序,只需要一个个对比即可,但其实效率很低。我们来看下代码1public static int search1(int[] a, int key) {2 for (int i 0, length a.length; i …

河南大学计算机组成原理,河南大学计算机组成原理考点

河南大学计算机组成原理考点 (34页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!11.90 积分第1章 计算机系统概论1、计算机硬件的五大部件?三大部分?运算器 存储器…

【Git】Git-常用命令备忘录(二)

开发过程中,各种问题都会出现,比如手残,眼花,头昏,导致了误操作,那么git作为一款由Linus亲自操刀,替换掉BitMover公司的BitKeeper的优秀源代码管理工具,让您在各种乱七八糟的误操作中&#xff0…

zipsys驱动签名工具_全球首发 300系列主板USB WIN7 64位驱动 SMXDIY

本版为改版驱动,仅供SMXDIY会员学习测试,禁止传播。众所周知,H310/B360/H370/Z390是没USB的WIN7驱动的。网上也找不到相关的资料,大家普遍默认没驱动,但这已经成为历史。我们这发布的是真的驱动,可以整合到…

.NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?

背景在.NET中,异常是指成员没有完成它的名称宣称可以完成的行动。在异常的机制中,异常和某件事情的发生频率无关。有时候需要对一些失败的任务进行多次的重试,如果重试的次数达到我们设定的阀值,则再放弃任务。解决方案使用一个静…

电子商务与计算机科学与技术的相关性,电子商务、计算机科学与技术、法学等相关专业。.doc...

电子商务、计算机科学与技术、法学等相关专业。.doc优先选派专业:金融学、财务管理、经济学、市场营销、电子商务、计算机科学与技术、法学等相关专业。交流学校专业设置情况详见链接: /jwc/jxjh/zyjs.asp1、专业建设概况:学校已形成以经济学…