海量資料處理_表分割槽
分割槽act_log表:
執行情況參考:
資料:2億條
insert as select parallel 8=〉undo size:0 time:524 sec
gather_table_stats=>undo size:0 time:360 sec
create index parallel 8=>undo size:0 time:400 sec
1,建立分割槽表:
注意:用生成的sql替換建立分割槽表ddl中的分割槽子句,並註釋此查詢語句。
SELECT *
FROM (SELECT /*+ parallel(t,8) */
'partition p' || to_char(action_date, 'YYYYMM') ||
' values less than (to_date(''' ||
to_char(add_months(to_date(to_char(action_date, 'YYYYMM') || '01',
'YYYYMMDD'),
1),
'YYYYMMDD') || ''',''YYYYMMDD'')),'
FROM act_log t
GROUP BY to_char(action_date, 'YYYYMM')
UNION
SELECT 'partition p' || to_char(add_months(SYSDATE, 1), 'YYYYMM') ||
' values less than (to_date(''' ||
to_char(to_date(to_char(add_months(SYSDATE, 2), 'YYYYMM') || '01',
'YYYYMMDD'),
'YYYYMMDD') || ''',''YYYYMMDD'')),'
FROM dual
UNION
SELECT 'partition p' || to_char(add_months(SYSDATE, 2), 'YYYYMM') ||
' values less than (to_date(''' ||
to_char(to_date(to_char(add_months(SYSDATE, 3), 'YYYYMM') || '01',
'YYYYMMDD'),
'YYYYMMDD') || ''',''YYYYMMDD'')),'
FROM dual
UNION
SELECT 'partition pmax values less than (maxvalue)' FROM dual)
ORDER BY 1;
exit;
create table ACT_LOG_PART
(
USER_ID INTEGER not null,
ACTION_DATE TIMESTAMP(6) not null,
TYPE VARCHAR2(50 BYTE) not null,
DETAIL VARCHAR2(4000 BYTE) not null,
CHNL VARCHAR2(1 BYTE) default '1'
) partition by range(action_date)(
partition p201101 values less than (to_date('20110201','YYYYMMDD')),
partition p201102 values less than (to_date('20110301','YYYYMMDD')),
partition p201103 values less than (to_date('20110401','YYYYMMDD')),
partition p201104 values less than (to_date('20110501','YYYYMMDD')),
partition pmax values less than (maxvalue)
);
2,遷移
--time,undo space,redo space
alter table act_log_part nologging;
insert /*+ append,parallel(tp,8) */ into ACT_LOG_PART tp
select /*+ parallel(t,8) */ * from act_log t;
commit;
alter table act_log_part logging;
analyze table:
begin
dbms_stats.gather_table_stats(ownname => user,tabname => 'ACT_LOG_PART',degree => 8);
end;
/
3,create index
create index IDX_ACT_LOG_USERID_ACTDATE on ACT_LOG_PART (USER_ID,ACTION_DATE)
local
parallel 8
nologging;
alter index IDX_ACT_LOG_USERID_ACTDATE logging noparallel;
4,exchange table
rename action_LOG to action_LOG_bak;
rename ACT_LOG_PART to act_log;
分割槽act_log表完成。
5,分割槽維護,請資料庫管理人員手工維護,維護說明如下:
--每月月初,刪除包含13個月前資料的分割槽,並新增下下個月的分割槽。
--分割槽命名規則為:'p' + 'YYYYMM',其中包含'YYYYMM'月份的資料。
--如:partition p200901 values less than (to_date('20090201','YYYYMMDD')),
--刪除分割槽:
--建議在刪除分割槽前備份該分割槽,如採用外部表方式備份。
--alter table act_log drop partition partition_name;
--如:當前是2010年3月,要刪除的分割槽為:p200902,刪除命令為:
--alter table act_log drop partition p200902;
--增加分割槽:
--alter table act_log split partition pmax at (split_date)
--into (partition l_partition_name, partition pmax);
--如:當前是2010年3月,要增加5月份的分割槽:p201005,增加命令為:
--alter table act_log split partition pmax at (to_date( '20100601','YYYYMMDD'))
--into (partition p201005, partition pmax);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-696777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 海量資料處理_表分割槽(線上重定義)
- 海量資料處理_表分割槽(分割槽自動維護與歷史分割槽歸檔)
- 分割槽表truncate慢處理
- 海量資料處理
- 分割槽表split操作及maxvalue處理
- 海量資料處理_表結構變更
- MySQL分表後原分割槽表處理方案MySql
- 海量資料遷移之分割槽表批次insert效能改進
- 海量資料遷移之分割槽表批量insert效能改進
- 分割槽表入無分割槽的資料庫資料庫
- 海量資料處理2
- 海量資料處理 (轉)
- 海量資料遷移之分割槽並行抽取並行
- 海量資料遷移之分割槽並行切分並行
- mysql分割槽表佔用大量容量處理(最佳化)及歸檔分割槽表MySql
- 海量資料處理_使用外部表進行資料遷移
- 海量資料處理_批量插入
- 海量資料處理_批量更新
- 自動備份、截斷分割槽表分割槽資料
- 資料表分割槽分割與刪除歷史資料
- MySQL資料表分割槽手記MySql
- 分割槽表匯入資料庫資料庫
- 資料庫分割槽表 什麼情況下需要分割槽資料庫
- 海量資料的併發處理
- postgresql分割槽表修改資料表欄位SQL
- 海量資料處理:十道面試題與十個海量資料處理方法總結面試題
- 分割槽表中全域性及本地分割槽索引什麼時候會失效及處理索引
- Hash分割槽表分割槽數與資料分佈的測試
- 使用expdp匯出分割槽表中的部分分割槽資料
- ORACLE刪除-表分割槽和資料Oracle
- hive 動態分割槽插入資料表Hive
- Hash分割槽表及資料分佈
- 海量資料遷移之使用分割槽並行切分匯入並行
- 海量資料處理利器greenplum——初識
- oracle分割槽表和分割槽表exchangeOracle
- 海量資料處理_資料泵分批資料遷移
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- oracle分割槽表和非分割槽表exchangeOracle