亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

PostgreSQL分區(qū)表(partitioning)應(yīng)用實(shí)例詳解

2020-01-31 15:21:54
字體:
供稿:網(wǎng)友

前言

項(xiàng)目中有需求要垂直分表,即按照時(shí)間區(qū)間將數(shù)據(jù)拆分到n個(gè)表中,PostgreSQL提供了分區(qū)表的功能。分區(qū)表實(shí)際上是把邏輯上的一個(gè)大表分割成物理上的幾小塊,提供了很多好處,比如:

1、查詢性能大幅提升
2、刪除歷史數(shù)據(jù)更快
3、可將不常用的歷史數(shù)據(jù)使用表空間技術(shù)轉(zhuǎn)移到低成本的存儲(chǔ)介質(zhì)上
那么什么時(shí)候該使用分區(qū)表呢?官方給出的指導(dǎo)意見是:當(dāng)表的大小超過了數(shù)據(jù)庫服務(wù)器的物理內(nèi)存大小則應(yīng)當(dāng)使用分區(qū)表,接下來結(jié)合一個(gè)例子具體記錄一下創(chuàng)建分區(qū)表的詳細(xì)過程。

創(chuàng)建分區(qū)表

首先看一下需求,現(xiàn)在有一張日志表,現(xiàn)在需要按表中的操作時(shí)間字段(operation_time)分區(qū),如下圖:

這個(gè)需求就是一個(gè)典型的按時(shí)間創(chuàng)建分區(qū)表,首先看一下步驟:

1.創(chuàng)建父表
2.創(chuàng)建n個(gè)子表,每個(gè)子表都是繼承于父表
3.定義一個(gè)規(guī)則(Rule)或觸發(fā)器(Trigger),把對(duì)主表的數(shù)據(jù)插入重定向到合適的分區(qū)表

如上所示,整體的大步驟就分為以上三個(gè),當(dāng)然還可以有一些小的優(yōu)化措施,比如對(duì)于每個(gè)分區(qū),在關(guān)鍵字字段上創(chuàng)建一個(gè)索引等等。首先來看第一步――創(chuàng)建父表。

在創(chuàng)建分區(qū)表之前應(yīng)當(dāng)先創(chuàng)建一張“父表”,所有分區(qū)表都從它繼承,這個(gè)表中沒有數(shù)據(jù),也不要在這個(gè)表上定義任何檢查約束及索引,現(xiàn)在我們就先創(chuàng)建這樣一張表,但之前先建一個(gè)序列:

CREATE SEQUENCE "public"."t_sys_log_main_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 99999999 START 1 CACHE 1;ALTER TABLE "public"."t_sys_log_main_id_seq" OWNER TO "postgres";

接下來創(chuàng)建“父表”,因?yàn)槭侨罩颈恚员砻麨椤皌_sys_log_main”:

CREATE TABLE "public"."t_sys_log_main" ("id" int4 DEFAULT nextval('t_sys_log_main_id_seq'::regclass) NOT NULL,"account_affiliation_code" varchar(100) COLLATE "default" NOT NULL,"account_affiliation" varchar(50) COLLATE "default" NOT NULL,"operation_time" timestamp(6) NOT NULL,"operation_key" varchar(2) COLLATE "default" NOT NULL,"operation_value" varchar(30) COLLATE "default" NOT NULL,"operation_loginid" varchar(100) COLLATE "default" NOT NULL,"operation_message" varchar(300) COLLATE "default" NOT NULL,"operation_ip" varchar(30) COLLATE "default" NOT NULL)WITH (OIDS=FALSE);COMMENT ON TABLE "public"."t_sys_log_main" IS '系統(tǒng)日志表';COMMENT ON COLUMN "public"."t_sys_log_main"."account_affiliation_code" IS '帳號(hào)所屬機(jī)構(gòu)代碼';COMMENT ON COLUMN "public"."t_sys_log_main"."account_affiliation" IS '帳號(hào)所屬機(jī)構(gòu)';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_time" IS '操作時(shí)間';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_key" IS '操作類型(key)';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_value" IS '操作類型(value)';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_loginid" IS '操作帳號(hào)';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_message" IS '操作信息';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_ip" IS '登錄地址';ALTER TABLE "public"."t_sys_log_main" ADD PRIMARY KEY ("id");

運(yùn)行以上DDL語句創(chuàng)建父表,創(chuàng)建成功后接下來就可以挨個(gè)創(chuàng)建分區(qū)表了,由于每個(gè)分區(qū)表都是從父表繼承的,所以分區(qū)表不會(huì)增加任何字段,下面我們按需求創(chuàng)建4張分區(qū)子表,分別用于存放9月、10月、11月和12月的日志數(shù)據(jù):

create table t_sys_log_y2016m09(CHECK (operation_time >= DATE '2016-09-01' AND operation_time< DATE '2016-10-01'))INHERITS (t_sys_log_main);create table t_sys_log_y2016m10(CHECK (operation_time >= DATE '2016-10-01' AND operation_time< DATE '2016-11-01'))INHERITS (t_sys_log_main);create table t_sys_log_y2016m11(CHECK (operation_time >= DATE '2016-11-01' AND operation_time< DATE '2016-12-01'))INHERITS (t_sys_log_main);create table t_sys_log_y2016m12(CHECK (operation_time >= DATE '2016-12-01' AND operation_time< DATE '2017-01-01'))INHERITS (t_sys_log_main);

如上所示,運(yùn)行完成后即可創(chuàng)建4張分區(qū)子表,在上面的語句中我們添加了一個(gè)約束表示只允許插入本月的數(shù)據(jù),接下來在這4張分區(qū)表的每個(gè)分區(qū)鍵上建立索引:

create index t_sys_log_y2016m09_operation_time ON t_sys_log_y2016m09(operation_time);create index t_sys_log_y2016m10_operation_time ON t_sys_log_y2016m10(operation_time);create index t_sys_log_y2016m11_operation_time ON t_sys_log_y2016m11(operation_time);create index t_sys_log_y2016m12_operation_time ON t_sys_log_y2016m12(operation_time);

到此為止我們的分區(qū)表就創(chuàng)建完畢了,接下來需要考慮數(shù)據(jù)插入的問題,如何才能讓不同日期的數(shù)據(jù)自動(dòng)的插入與其對(duì)應(yīng)的分區(qū)子表中呢?有兩種解決方案,分別是:規(guī)則(Rule)和觸發(fā)器(Trigger),相比觸發(fā)器,Rule的開銷更大,所以我在這里就不做過多介紹了,下面直接介紹Trigger的方式。

Trigger通常會(huì)結(jié)合自定義函數(shù)(Function)來實(shí)現(xiàn)分區(qū)插入,F(xiàn)unction負(fù)責(zé)根據(jù)條件選擇插入,而Trigger則負(fù)責(zé)Function的自動(dòng)調(diào)用。首先定義Function,功能很簡(jiǎn)單,即根據(jù)日期區(qū)間insert數(shù)據(jù)即可:

CREATEOR REPLACE FUNCTION sys_log_insert_trigger () RETURNS TRIGGER AS $$BEGINIF (  NEW .operation_time >= DATE '2016-09-01'  AND NEW .operation_time < DATE '2016-10-01') THEN  INSERT INTO t_sys_log_y2016m09VALUES  (NEW .*) ;ELSEIF (  NEW .operation_time >= DATE '2016-10-01'  AND NEW .operation_time < DATE '2016-11-01') THEN  INSERT INTO t_sys_log_y2016m10VALUES  (NEW .*) ;ELSEIF (  NEW .operation_time >= DATE '2016-11-01'  AND NEW .operation_time < DATE '2016-12-01') THEN  INSERT INTO t_sys_log_y2016m11VALUES  (NEW .*) ;ELSEIF (  NEW .operation_time >= DATE '2016-12-01'  AND NEW .operation_time < DATE '2017-01-01') THEN  INSERT INTO t_sys_log_y2016m12VALUES  (NEW .*) ;ELSE  RAISE EXCEPTION 'Date out of range!' ;ENDIF ; RETURN NULL ;END ; $$ LANGUAGE plpgsql;

最后再創(chuàng)建觸發(fā)器用于執(zhí)行剛才的Function:

CREATE TRIGGER sys_log_insert_trigger BEFORE INSERT ON t_sys_log_mainFOR EACH ROWEXECUTE PROCEDURE sys_log_insert_trigger();

到這里就全部創(chuàng)建完成了,最后測(cè)試一下看看結(jié)果。為了確認(rèn)我們的觸發(fā)器的確觸發(fā)了,我們打開存儲(chǔ)過程的統(tǒng)計(jì)開關(guān),在postgresql.conf中,找到track_functions,改成all:

接下來就可以運(yùn)行幾條測(cè)試insert語句來看看是否能把指定的時(shí)間記錄分別插入到與其對(duì)應(yīng)的分區(qū)子表中,插入之前先看下sys_log_insert_trigger()的統(tǒng)計(jì)信息:

可以看到目前沒有統(tǒng)計(jì)記錄,接下來插入幾條測(cè)試數(shù)據(jù):

INSERT INTO t_sys_log_main VALUES (1,'200022', '西安高新第一中學(xué)初中校區(qū)', '2016-9-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200023', '西安高新第一中學(xué)初中校區(qū)', '2016-9-12 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200024', '西安高新第一中學(xué)初中校區(qū)', '2016-10-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200025', '西安高新第一中學(xué)初中校區(qū)', '2016-11-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200026', '西安高新第一中學(xué)初中校區(qū)', '2016-12-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200027', '西安高新第一中學(xué)初中校區(qū)', '2016-12-25 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');

緊接著再看一下sys_log_insert_trigger()的統(tǒng)計(jì)信息:

如上圖,可以看出調(diào)用了6次函數(shù),因?yàn)槲覀儾迦肓?條數(shù)據(jù),至此分區(qū)表由創(chuàng)建到測(cè)試的整個(gè)過程就已經(jīng)成功完成了。

總結(jié)

簡(jiǎn)單記錄一下PostgreSQL創(chuàng)建分區(qū)表的完整步驟以及注意事項(xiàng),希望對(duì)遇到同樣問題的朋友有所幫助,The End。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

成人国产在线看| 99久久久久| 国产aⅴ精品一区二区四区| 在线观看中文字幕av| 美女呻吟一区| 国产又粗又爽视频| 成人亲热视频网站| 男人的天堂av网站| 一区不卡字幕| 九色自拍视频在线观看| 在线中文字幕-区二区三区四区| 在线成人av影院| 手机在线免费看片| 动漫一区二区在线| 一区二区电影在线观看| 欧美伊人久久大香线蕉综合69| 国产蜜臀av在线一区二区三区| 日韩精品中文在线观看| 欧美国产日韩精品免费观看| 污视频免费在线观看| 久久久久亚洲天堂| 特级丰满少妇一级aaaa爱毛片| 亚洲激情丁香| 免费看黄网站在线观看| 精品国产乱码久久久久久蜜臀| 国模一区二区三区私拍视频| 欧美性猛交视频| 国产精品自产拍高潮在线观看| 亚洲精品五月天| 男同互操gay射视频在线看| 这里只有精品在线观看视频| 黑料吃瓜在线观看| 青青青爽久久午夜综合久久午夜| 亚洲国产影院| 免费免费啪视频在线观播放| 日韩在线中文字| 91青青在线视频| 999国产精品999久久久久久| 国产三级在线免费观看| 国产福利91精品一区二区| 深爱激情久久| 红桃视频国产一区| 国产日韩一区二区三区在线| 中文字幕伦理免费在线视频| 日韩三级免费| 国产一区二区不卡在线| 久久九九影视网| 精品日产乱码久久久久久仙踪林| 久久精品一区二区三区不卡牛牛| 极品人妻一区二区| 欧美大片大片在线播放| 人人干人人草| 香蕉视频网站入口| 国产91在线精品| 欧美激情一区二区三区在线视频| 亚洲综合图片一区| 少妇人妻丰满做爰xxx| 丝袜足控免费网站xx网站| 吉吉日韩欧美| 老司机免费视频| 日本不卡1234视频| 欧美成人国产| 大色综合视频网站在线播放| 免费毛片网站在线观看| 色先锋最新资源| 亚洲精品视频在线播放| 黄色影视在线观看| 在线一区免费| 亚洲欧美不卡| 国产精品日韩精品欧美在线| 在线国产情侣| 国产白丝在线观看| 九色一区二区| 国产精选第一页| 欧美激情三级免费| 激情综合在线观看| 国产精品一区二区免费福利视频| 亚洲精品久久久久久久久久久久| 依依综合在线| 91制片厂毛片| 久久人妻少妇嫩草av蜜桃| 欧美一级久久久| av女人的天堂| 亚洲电影二区| 91精品在线观看视频| 亚洲一区在线视频观看| 白嫩情侣偷拍呻吟刺激| 天天操夜夜草| 久久精品99国产国产精| 国产精品亚洲综合天堂夜夜| 欧美aaa在线| 久久久精品国产一区二区三区| 日韩欧美一区二区三区在线| h在线观看网站| 国产97在线亚洲| 色yeye免费人成网站在线观看| 成人短视频在线观看| 91久久久久久久久久久久久| 亚洲成色777777女色窝| 性xxxx视频播放免费| 成人黄色免费观看| 亚洲福利视频一区二区| 久热视线观看免费视频| 日韩国产小视频| 欧美大尺度激情区在线播放| 国产日韩欧美在线一区| 日韩av无码一区二区三区不卡| 午夜裸体女人视频网站在线观看| 国产亚洲精品久久久久久久| 蜜桃久久av一区| 777奇米四色成人影色区| www.亚洲国产| 成人在线免费观看av| 日韩免费视频网站| 日本一二三四高清不卡| 久久在线观看| 91福利视频免费观看| 九一国产精品| 欧美精品一区二区视频| 成人a免费视频| 99国产高清| 羞羞视频网站在线免费观看| 国产精品毛片一区二区| 麻豆一区二区在线观看| 欧美另类精品xxxx孕妇| 亚洲国产成人91porn| 少妇久久久久久久久久| 国产色婷婷亚洲99精品小说| 国产一区高清视频| 亚洲精品123区| 最新91视频| 在线精品视频免费观看| 久久精品日产第一区二区三区乱码| xxx国产在线观看| 久久无码专区国产精品s| 国产91美女视频| 亚洲国产精品久久久久秋霞影院| 在线观看成人毛片| 国产精品久久久久久久免费大片| 凹凸日日摸日日碰夜夜爽1| 成人三级高清视频在线看| 在线观看国产原创自拍视频| 中文字幕精品一区久久久久| 亚洲精品国产一区二区在线| 国产亚洲成av人片在线观看| 精品国产一区二区三区香蕉沈先生| h视频在线看| 成人小视频免费观看| 人妻视频一区二区三区| 欧美三级视频网站| 中文字幕av片| 久草免费在线视频观看| 天天插天天干天天操| 成人av番号网| 欧美多人野外伦交| 被男同事摸的水好多| 日韩午夜在线观看视频| 欧美性xxxxx极品娇小| 日韩av在线不卡| 狠狠色噜噜狠狠| 日本男人天堂网| 999国产精品| 欧美亚一区二区三区| 人人妻人人添人人爽欧美一区| 97人人模人人爽人人少妇| 中文字幕在线观看视频免费| 日韩一二三区视频| 天天综合网在线| 男女免费观看在线爽爽爽视频| 国产激情视频在线| 男女一区二区三区| 人妻中文字幕一区| 添女人荫蒂视频| 日韩综合小视频| 人妻少妇精品视频一区二区三区| 欧美孕妇孕交| jizz日本18| 另类小说综合网| 午夜视频在线观看韩国| 欧美日韩综合另类| 9191国语精品高清在线| 中文字幕在线观看国产| 亚洲柠檬福利资源导航| 日韩一区二区高清视频| 黄色在线看片| 日韩av一区二区在线观看| 波多野结衣电影免费观看| 亚洲人成在线观| 青青草91久久久久久久久| 午夜高潮免费视频| 欧美日韩一区二区三区在线免费观看| 亚洲国产一成人久久精品| 免费永久在线观看黄网| 91久久综合亚洲鲁鲁五月天| 国产精品成人v| 日本中文字幕一区二区有限公司| 国产欧美高清视频在线| 日韩免费av一区二区| 漂亮人妻被中出中文字幕| 盗摄牛牛av影视一区二区| 国产一级在线免费观看| 四虎影院在线域名免费观看| 姬川优奈aav一区二区| av在线天堂网| av中文字幕在线| 在线日韩日本国产亚洲| 91成人精品在线| 99久久综合国产精品| 99热在线看| 欧美午夜性生活| 欧美激情喷水视频| wwwxxx国产| 亚洲人精品午夜| 亚洲少妇最新在线视频| 最近中文字幕av| 国产精品女人久久久久久| 国产99久久久久久免费看农村| 中文在线资源| 日本欧美精品在线| 国产免费视频在线| 中文字幕精品无码亚| 91社区视频在线观看| 91精品国产91综合久久蜜臀| 精品三级在线观看| 欧美国产精品日韩| 久久国产精品视频| 国产成人亚洲精品狼色在线| 国产精品呻吟久久| a级片在线视频| 九七伦理97伦理手机| 亚洲黄在线观看| 亚洲国产精品久久久久婷婷软件| 一区二区三区导航| 日本十八禁视频无遮挡| 欧美美女色图| 亚洲成人久久久| 香蕉视频一区| 萌白酱国产一区二区| 国产精品久久久久久av福利| av成人在线观看| 国产·精品毛片| 欧美特黄一区| 在线观看视频亚洲| 日韩免费av一区二区三区| 亚洲小视频在线播放| 日韩亚洲电影在线| 日韩经典在线观看| 91在线观看喷潮| 精品亚洲一区二区三区在线播放| 亚洲视频免费一区| 亚洲人高潮女人毛茸茸| 337p粉嫩大胆噜噜噜噜噜91av| 国产激情综合五月久久| 国产精品视频在线观看免费| 国产传媒第一页| 国产在线观看中文字幕| 另类中文字幕网| 亚洲三级一区| 欧美好骚综合网| 久蕉在线视频| 欧洲女同同性吃奶| 岳乳丰满一区二区三区| 2019中文字幕在线| 天堂入口网站| 91精彩视频在线观看| 免费人成在线观看播放视频| 国产精品极品国产中出| 最近国产精品视频| 久久国产直播| 久草av在线播放| 顶级嫩模精品视频在线看| 99精品国产一区二区三区不卡| 怡红院av久久久久久久| 国产美女主播在线播放| 黄a大片av永久免费| 一区二区三区入口| 亚洲成熟少妇视频在线观看| 欧美国产亚洲一区| 中文字幕亚洲第一| 日韩伦理一区二区三区av在线| 大乳在线免费观看| 久久久久久久久一| 午夜av成人| av无码精品一区二区三区| 免费在线黄色片| 久久久久久久一区二区三区| 夜色视频网站| 成人在线免费公开观看视频| 91视频免费看片| 国产成人免费高清视频| 日韩 欧美 精品| 懂色av一区二区三区免费看| 嫩草影院国产精品| 久久久久久久97| 无码人妻aⅴ一区二区三区有奶水| hitomi一区二区三区精品| 国产精品777一区二区| 欧美乱大交xxxxx另类电影| 天天色天天操天天做| h片在线观看视频免费免费| 国产女人18毛片水真多| 国产成人精品无码免费看夜聊软件| 污视频网站免费在线观看| 激情懂色av一区av二区av| 色婷婷**av毛片一区| av免费在线不卡| 乱码第一页成人| 亚洲欧美激情国产综合久久久| 日韩精品欧美一区二区三区| 调教视频vk| 污片视频在线免费观看| 在线成人免费网站| 91精品婷婷国产综合久久性色| 黄色网址免费看| 中文字幕999| 欧美成人免费在线观看视频| 99爱视频在线| 国产色综合天天综合网| 成人av网址在线观看| 国产成人无码aa精品一区| 青娱乐在线视频观看| 欧美视频在线免费播放| 中文字幕亚洲欧美在线不卡| 久久天堂国产精品| 5566中文字幕| 亚洲欧洲中文天堂| 最新欧美人z0oozo0| 久久一区二区三区喷水|