Oracle Hash分区的使用总结
admin
2023-05-09 04:41:11
0


   近期项目需要用到分区表,但是分区键值有无法确定,因此只能使用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).分区把一个大段分为更多的小片段,可以降低争用。



相关内容

热门资讯

河南一地入选!国家级试点城市名... 【大河财立方消息】5月14日消息,工业和信息化部、财政部公示第三批制造业新型技术改造城市试点拟入选名...
周日有大到暴雨!郑州将有连续性... 受切变线和低空急流共同影响,16日至18日我市将有一次明显降水过程。15日夜里有阵雨,16日下午到夜...
降的是费率 增的是底气 河南失... 中国铁路郑州局集团有限公司开展业务技能实操训练。受访者供图一笔失业保险稳岗返还资金,到了企业手里,可...
宇树科技发布全球首款载人变形机... 宇树科技CEO王兴兴与载人变形机甲GD01击拳。宇树科技供图5月12日,宇树科技发布全球首款量产版载...
洗衣机地漏盖不闭合怎么修 如果您发现您的洗衣机地漏盖不闭合,这可能是由于以下原因之一: 1. 漏水管生锈或破裂:这可能是漏水...
坚定不移沿着习近平总书记指引的... 5月12日,安阳市林州市红旗渠青年洞景区研学热潮涌动,来自各地的学生沿渠岸栈道有序前行,近距离触摸“...
波轮洗衣机不盖盖儿是不是不工作 一定不会工作,因为洗衣机盖子上有自动刹车装置。如果洗衣机盖子没盖上,就无法工作。洗衣机不工作还有其他...
美亚科技被出具警示函!此前A股... 【大河财立方消息】5月13日,广东证监局披露行政监管措施决定书,对广东美亚旅游科技集团及相关责任人出...
凤凰直击:中美元首会晤,媒体争... 5月14日上午,中美元首举行会谈。凤凰卫视记者霍伟伟在人民大会堂发回现场报道。
如何修复洗衣机后盖盖不上 洗衣机后盖无法盖上是相当常见的问题。如果发现洗衣机后盖无法盖上,建议首先仔细检查后盖和机器是否与之前...