iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle Hash分区的使用总结
  • 601
分享到

Oracle Hash分区的使用总结

2024-04-02 19:04:59 601人浏览 泡泡鱼
摘要

   近期项目需要用到分区表,但是分区键值有无法确定,因此只能使用hash分区(range、list分区以前常用,比hash分区简单),查询了文档,发现上面说的和实际使用时有点差距,就专


   近期项目需要用到分区表,但是分区键值有无法确定,因此只能使用hash分区(range、list分区以前常用,比hash分区简单),查询了文档,发现上面说的和实际使用时有点差距,就专门做实验验证下。


官方文档(11g、12c的解释都是一样的):

docs.oracle.com/database/121/CNCPT/schemaob.htm

Hash Partitioning

  In hash partitioning, the database maps rows to partitions based on a hashing alGorithm that the database applies to the user-specified partitioning key. The destination of a row is determined by the internal hash function applied to the row by the database. The hashing algorithm is designed to distribute rows evenly across devices so that each partition contains about the same number of rows.

   Hash分区时,数据库根据hash算法映射行到用户指定的分区键中。行的存放目的地由数据库的内部hash函数来决定。hash算法的目的是在设备上均匀分布行,以便每个分区包含相同数量的行。


建表如下:

create table t_test_part(

  id        number,

  pro_num   varchar2(40), 

  app_type  varchar2(40),

  ...............

)

partition by hash(pro_num)

(

 partition part_01,

 partition part_02,

 partition part_03,

 partition part_04,

 partition part_05,

 partition part_06,

 partition part_07,

 partition part_08

)

tablespace DDS_DATA

  pctfree  10

  initrans 2

  maxtrans 255

storage

(

  initial 64K

  next    64k

  minextents 1

  maxextents unlimited

)

;

加入1000万数据,进行各种DML操作,验证数据的存储和各种性能。


实际结论见下:

1. 数据随机插入

   Hash分区一般是在分区键值无法确定的情况下,使用的一种分区策略,Oracle按照hash 算法把数据插入用户指定的分区键中,它是随机的插入到某个区中,不受人为的干预。


2. 分区大小

   分区的初始大小受建表初始化参数的影响(即initial、next的影响),不指定时受建库时表空间参数的影响。实际分配数据后的大小,受分区字段值的影响。分区字段值相同时,所有数据只能插入到一个分区;分区字段值不同时,数据随机插入不同的分区。

    根据实验的结果并不是平均分配,也不是每个区都分配。如上面的表,最少的一个区只有0.1M,最大的一个区是33M,严重的不均匀。也许随着时间和数据量的不断增加,数据会趋于均衡,估计实验是很难验证出来的。


3.  Local和Global索引

   分区索引分为Local和Global索引,Local索引和表分区是一一对应的,Global索引又分为Global非分区索引和Global分区索引。Global非分区索引,可以与表分区对应,也可以不对应;但是当Global分区索引与表分区的表空间对应时,则Global分区索引就是个Local索引。


4. 分区定值查询时,Local索引与Global索引没有任何区别,但是范围查询时,Global索引的partition start 和 partition stop是相同的;Local索引的partition start 和 partition stop 就不同了,上面的那个表是从1到8(和范围的大小有关)。根据这个情况,如果实际应用中定值查询多,就用Local索引了,反之,则用Global索引。如果根本没法分,那就要权衡了。


5. 分区与不分区的区别

   就我的测试用例来说,两者没有本质区别,时间都相当。 15G的数据,分区的sql语句COST是不分区时SQL语句COST的几千倍,不分区的COST还更低。但是两者的执行时间没有任何区别。在实际使用分区时,性能只是要考虑的一个方面,易管理性、可用性方面分区还是有很大优势的,不能仅看一面而忽略了整体。

  如:

  1).一个分区的丢失或损坏不会影响其余的分区,损坏的分区可以单独恢复。

  2).分区把一个大段分为更多的小片段,可以降低争用。



您可能感兴趣的文档:

--结束END--

本文标题: Oracle Hash分区的使用总结

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

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

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

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

下载Word文档
猜你喜欢
  • Linux之分区【详细总结】
    目录 分区介绍分区查看指令lsblk ![请添加图片描述](https://img-blog.csdnimg.cn/d7ea5468d719433ea6ee4ab0eb145770.png)l...
    99+
    2023-10-21
    linux 服务器 运维
  • Java常用HASH算法总结【经典实例】
    本文实例讲述了Java常用HASH算法。分享给大家供大家参考,具体如下:public class HashAlgorithms{ public static int additiveHash(String key, int prime...
    99+
    2023-05-31
    java hash算法 ava
  • 转:Mysql 分区 分表相关总结
    拆分策略选择 其实拆分很灵活,有的是垂直切分,将一个库拆成两个或多个,将有相关联的表放在一个库里。有的是水平切分将数据量大的表按照一定逻辑进行拆分。个人感觉垂直切分的相对来说缓解了IO的瓶颈,而水...
    99+
    2024-04-02
  • 分享ORACLE SEQUENCE跳号总结
    在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢...
    99+
    2024-04-02
  • oracle的exists用法总结
    Oracle的EXISTS用于检查子查询是否返回任何行。它返回一个布尔值,如果子查询返回至少一行,则为true,否则为false。 ...
    99+
    2024-04-09
    oracle
  • mysql表的四种分区方式总结
    目录1、什么是表分区?2、表分区与分表的区别3、表分区有什么好处?4、分区表的限制因素5、如何判断当前MySQL是否支持分区? 6、MySQL支持的分区类型有哪些?6.1、...
    99+
    2024-04-02
  • MySQL分区建索引以及分区介绍总结
    目录MySQL 分区建索引介绍MySQL 分区介绍介绍总结MySQL 分区建索引介绍 mysql分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张独立的表,从&l...
    99+
    2024-04-02
  • RedisTemplate常用操作方法总结(set、hash、list、string等)
    目录String类型Hash类型List类型Set类型zSet类型Redis常用的数据类型: StringHashListSetzSetSorted set String类型 保存和...
    99+
    2024-04-02
  • ORACLE临时表空间的总结分析
    ORACLE临时表空间的总结分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。临时表空间概念临时表空间用来管理数据库排序操作以...
    99+
    2024-04-02
  • spring注解之@Valid和@Validated的区分总结
    目录@Valid:@Validated:1、分组2、组序列3、验证多个对象补充:主要区别总结@Valid: @Valid注解用于校验,所属包为:javax.validation.Va...
    99+
    2024-04-02
  • Oracle中PL/SQL的用法总结
    目录一、PLSQL基本结构1、基本数据类型变量1. 基本数据类型2. 基本数据类型变量的定义方法2、表达式1. 数值表达式2. 字符表达式3. 关系表达式4. 逻辑表达式3、PLSQ...
    99+
    2024-04-02
  • JavaScript JSON.stringify()的使用总结
    目录一、使用方法 1、基本用法 2、第二个参数--过滤器 3、第三个参数--字符串缩进 4、toJSON()方法--自定义JSON序列化 二、使用场景 1、判断数组是否包含某对象,或...
    99+
    2024-04-02
  • sqlite3使用总结
           OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:软件属于公共财(public domain),SQLite可说...
    99+
    2023-01-31
  • clipboard.js使用总结
    目录(1)介绍: (2)clipboard复印内容的方式有 (3)Function操作有两种: (4)通过属性返回复印的内容 (5)函数和属性的兼容方式 (1)介绍: clipbo...
    99+
    2024-04-02
  • BigDecimal使用总结
    对于超过16位的大型数字,需要用到Java在java.math包中提供的API类BigDecimal,而且也不是传统的+-*/,而是调用对应的方法。 1.创建对象 使用new的方式创建BigDecim...
    99+
    2023-09-03
    java BigDecimal
  • redis 使用总结
    最近一段时间与redis接触比较频繁。发现有些东西还是工作中经常会用到的,自己也花了点时间巩固下。本篇文章主要是以总结性的方式梳理,因为redis的主题很大,任何一个技术点展开都是几篇文章的量。也可以说这篇...
    99+
    2024-04-02
  • w3m使用总结
    ...
    99+
    2023-01-31
    w3m
  • Android ViewModel的使用总结
    目录基本使用 MainRepositoryMainViewModelMainActivityViewModel 相关问题是高频面试题。主要源于它是 MVVM 架构模式的重要组件,并且...
    99+
    2024-04-02
  • mysql使用from与join两表查询的区别总结
    前言 在mysql中,多表连接查询是很常见的需求,在使用多表查询时,可以from多个表,也可以使用join连接连个表 这两种查询有什么区别?哪种查询的效率更高呢? 带着这些疑问,决定动手试...
    99+
    2024-04-02
  • Mybatis中resultMap的使用总结
    Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.html resultMap是Mybatis最强大的元素,它可以将查...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作