中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle Hash分區的使用總結

發布時間:2020-07-28 21:04:57 來源:網絡 閱讀:5087 作者:srsunbing 欄目:關系型數據庫


   近期項目需要用到分區表,但是分區鍵值有無法確定,因此只能使用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).分區把一個大段分為更多的小片段,可以降低爭用。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙州县| 舞钢市| 乌兰浩特市| 定陶县| 城固县| 临湘市| 灌云县| 九龙县| 辉南县| 峨眉山市| 多伦县| 荣昌县| 松原市| 丽江市| 阿尔山市| 东方市| 建湖县| 靖江市| 霞浦县| 蒙山县| 惠东县| 博白县| 都昌县| 宜丰县| 星子县| 甘孜| 江安县| 阳西县| 商城县| 西平县| 灵寿县| 大新县| 余姚市| 兰州市| 凌云县| 页游| 石首市| 宽甸| 十堰市| 赤水市| 太原市|