在上篇vertica 分割槽表設計中,已經提過了vertica的分割槽表建立和分割槽刪除,但舉例上並不系統,
本篇文章將系統的對分割槽表設計及後續的刪除分割槽進行講解。
概述:vertica分割槽表(天和月)建立以及刪除分割槽
vertica分割槽表可以使用預定義函式建立,有特殊需求時,也可以自定義函式建立。
我這裡測試均是以業務使用者test登入建表: vsql -utest
按天分割槽(doy)
--按天分割槽(doy)
create table t_jingyu_doy(
col1 int,
col2 varchar,
col3 timestamp not null)
partition by (date_part('doy', col3));
按月分割槽(month)
--按月分割槽(month)
create table t_jingyu_month(
col1 int,
col2 varchar,
col3 timestamp not null)
partition by (date_part('month', col3));
按天分割槽
--按天分割槽
create table t_day(
col1 int,
col2 varchar,
col3 timestamp not null)
partition by (extract(year from col3)*10000
+ extract(month from col3)*100 +
extract(day from col3));
按月分割槽
--按月分割槽
create table t_month(
col1 int,
col2 varchar,
col3 timestamp not null)
partition by (extract(year from col3)*100 +
extract(month from col3));
查詢業務表的基本資訊:
--所有表
select table_schema, owner_name, table_name,
partition_expression from tables;
--未分割槽的表
select table_schema, owner_name, table_name,
partition_expression from tables where partition_expression='';
--分割槽的表
select table_schema, owner_name, table_name,
partition_expression from tables where partition_expression <> '';
入庫須知:
• 資料庫字符集utf-8
• 入庫檔案編碼格式: utf-8無bom格式編碼
• 主機系統字符集: zh_cn.utf-8
• crt軟體字符集: utf-8
我們這裡入庫2年(每天1條)的測試資料供後面講解刪除分割槽資料用。 col3時間列是2年中每一天的時間。
入庫具體方法可以參見:vertica 業務使用者指定資源池載入資料
--按天分割槽(doy),刪除」2015-08-01」這一時間的分割槽資料
select drop_partition('test.t_jingyu_doy', extract('doy' from '2015-08-01'::date));
test=> select drop_partition('test.t_jingyu_doy', extract('doy' from '2015-08-01'::date));
drop_partition
-------------------
partition dropped
(1 row)
測試結論:實際刪除2天的資料, 2015和2023年的這一天資料都被刪除, 而且第二年不一定就是8月1日。
--按月分割槽(month),刪除」2015-08」這乙個月的分割槽資料
select drop_partition('test.t_jingyu_month', extract('month' from '2015-08-01'::date));
test=> select drop_partition('test.t_jingyu_month', extract('month' from '2015-08-01'::date));
drop_partition
-------------------
partition dropped
測試結論:實際刪除2個月的資料, 2015和2023年的8月份的資料。
--按天分割槽,刪除2015-08-01這一時間的分割槽資料
select drop_partition('test.t_day', 20150801);
test=> select drop_partition('test.t_day', 20150801);
drop_partition
-------------------
partition dropped
(1 row)
--按月分割槽,刪除2015-08這乙個月的分割槽資料
select drop_partition('test.t_month', 201508);
test=> select drop_partition('test.t_month',201508);
drop_partition
-------------------
partition dropped
oracle表分割槽設計 ORACLE 分割槽表的設計
分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...
oracle表分割槽設計 ORACLE分割槽表的設計
分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...
oracle表分割槽設計 ORACLE 分割槽表的設計
oracle 分割槽表的設計 分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存...