清空一張表的資料,我們可以truncate這張表,亦或是用replace的方式載入乙個空檔案來清空表。
那麼如果現在我只需清空表的某個分割槽的資料話,要如何來做呢?
2b青年說:「直接delete + 條件嘛。」
那好,現在我有張表的情況是這樣的:
每個分割槽中都有1g多點的資料,現在用delete來刪除1號分割槽的資料。
總用時4分鐘不到點。4分鐘裡可以沏個茶,上個小號外面溜達一圈不是蠻好,2b青年果然歡樂多。
由於delete在資料庫歸檔模式下會寫日誌,可用於恢復delete的資料。因此造成delete資料的效能低下。甚至如果資料量大的話,日誌很容易將空間撐爆。
反正那些資料我確定一定以及肯定是不需考慮恢復的話,那麼如果delete不使它寫日誌,效率是否會快很多呢?
既然如此就來做下試驗看看嘛。
首先要將刪資料的表設為不寫日誌。
alter
table table_nameactivate not logged initially
並且還要將事務提交模式改為手動。因為前一步設定表操作不記日誌,只在乙個事務中有效。一旦有提交動作,不記日誌的設定就無效了。
做好以上兩步後,開始用delete刪資料。這次我們來刪2號分割槽的資料。結束後別忘了commit提交。
結果只用了26秒,果然快了許多。
可是這個清資料的方法感覺還是不夠乾淨利落,因為我們都用過truncate命令嘛,那個感覺才能叫最快捷的清空資料方式。
在oracel中有對指定表的某個分割槽做truncate的功能
altet table
table_name
truncate partition
partition_name reuse
storage
其中一般加上reuse storage這個引數來保留分配使用的空間。
在db2中truncat命令沒有指定對某個分割槽做清空的功能。那麼有什麼其他的方法能效率地完成清空操作呢?
有的,db2中有可以使表的分割槽變成表,或是將一張表變為乙個表的分割槽的功能,也能直接給表新增乙個新分割槽。
detach,將table_name表的指定分割槽partition_name轉換為表tab_name。
alter table
table_name
detach partition
partition_name
into tab_name
add,給表table_name新增分割槽列從***開始至yyy的分割槽partition_name。
alter
tabletable_nameadd
partitionpartition_name starting
'***' ending 'yyy'
attach將tab_name轉換為分割槽列從***開始至yyy結束的tablename_name的乙個分割槽。
alter
tabletablename_name attach partition starting '***' ending 'yyy' from tab_name
那麼清空分割槽資料的話我可以衍生出2種方法來實現。
1.將清空資料的分割槽轉換為表,然後新增乙個新分割槽至原表。
2.將清空資料的分割槽轉換為表,truncate轉換出的表,然後再將該錶轉換為原表的分割槽。
實驗下方法一
首先將清空資料的分割槽轉換為表,這次清空0號分割槽。
結果可見原表中的0號分割槽已被轉換出原表,執行只用了0.611秒。
然後新增乙個新分割槽至原表
新新增個空的分割槽,用時0.333秒。
清空分割槽的資料總共用時1秒不到。通過時間對比,這才是理想中清理分割槽資料的好方法。
使用方法2時,將表轉換為表的分割槽後,系統會提示你,該錶處於完整性待定的狀態下,因此需要對該錶做完整性的檢查。
set integrity
fortable_name immediate
checked
同樣如果乙個分割槽中想刪除大部分資料只留下一小部分的話,可以先新建表,將那一小部分轉移到新建表中,然後對原表該分割槽detach轉換為表後刪除表,再把新建的表attach回原表成為乙個分割槽。也可以新建表分割槽後再將資料匯入回去。
db2 最大分割槽數 DB2 V9表分割槽(一)
關鍵字 ibm db2 v9 表分割槽 資料分割槽 範圍 表分割槽鍵 內容提要 db2 v9新增了表分割槽功能,因此對一些大表,我們在db2 v9中不再需要分拆成小表,再用union all 檢視的方式進行設計,而是直接用分割槽表實現一些這些功能。表分割槽功能是一種資料組織方案,即,表資料根據乙個或...
db2 最大分割槽數 Hive靜態分割槽和動態分割槽
hive分割槽的作用 如果沒有分割槽的存在,那麼每次查詢hive將會進行全表掃瞄。對於小資料量的表來說,全表掃瞄並不會慢到無法忍受,但是對於大資料量來講,比如幾年的資料,每次查詢都要掃瞄幾年的所有資料,除了浪費時間之外,還浪費集群資源。為了改進這一問題,分割槽的價值就體現出來了。對於幾年的資料,在設...
Db2效能優化 表分割槽
前言 實驗環境 os 名稱 microsoft windows server 2008 r2 enterprise os 版本 6.1.7601 service pack 1 build 7601 product name db2 enterprise server edition license ...