Vertica 分割槽表設計 續

2021-09-07 23:45:44 字數 2995 閱讀 4412

在上篇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語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存...