cstore_fdw的安装使用以及源码分析

 百家乐概况     |      2020-04-07 22:00

  从源码中观测到在CStoreEndForeignModify中会拓宽flushstripe操作,便是无论插入一条数据仍旧批量安排数据,都会進展flushstripe操作

postgres中外界表的兑现约等于八个引擎,通过挂接C语言的函数指针完毕

  优点1:因为有压缩,所以在disk上的囤积大大收缩,压缩比能落得2-4倍

  相比较后磁盘使用减弱了众多!!

  经过cstore_fdw外界扩张压缩后占用的磁盘大小:

  5、6、7、8整合了插入操作 例如:insert into customer_reviews select * from customer;

  下载好后校订Makefile文件中的pgconfig钦赐到安装目录下 比方:/usr/local/postgres/bin/pgconfig

  最终得出结论:对于三番两次进行单条插入只怕交易型数据库,这种压缩效能就不是很显眼了,要是对于批量插入的话,压缩比例依然很可观的,並且查询也会比较快。

  运转数据库:

  [postgres@centos01 ~]$ pg_ctl -D db1 -l logfile start -m fast

  非常注意的是在插入的时候,由于CStorePlanForeignModify那么些函数中剖断了tableEntry->rtekind == RTE_SUBQUERY,

-rw------- 1 postgres postgres 6236569 Dec 5 10:07 278237
-rw------- 1 postgres postgres 56 Dec 5 10:07 278237.footer

  PG原生表占用磁盘大小:

  [postgres@centos01 ~]$ psql

三、源码解析

  因而 insert into xx values xxx 这种插入是不补助的。

  即使是批量插入,则根据默许的条带大小,块大小来拓宽划分,满意stripe了就刷磁盘,接着剩余不满意stripe的作为其它二个条带,假如依据一条数据一个条带的话,查询load数据就能一定迟缓。

Datumcstore_fdw_handler(PG_FUNCTION_ARGS){   FdwRoutine *fdwRoutine = makeNode(FdwRoutine);  fdwRoutine->GetForeignRelSize = CStoreGetForeignRelSize; fdwRoutine->GetForeignPaths = CStoreGetForeignPaths; fdwRoutine->GetForeignPlan = CStoreGetForeignPlan;   fdwRoutine->ExplainForeignScan = CStoreExplainForeignScan;   fdwRoutine->BeginForeignScan = CStoreBeginForeignScan;//1    fdwRoutine->IterateForeignScan = CStoreIterateForeignScan;//2    fdwRoutine->ReScanForeignScan = CStoreReScanForeignScan;//3  fdwRoutine->EndForeignScan = CStoreEndForeignScan;//4    fdwRoutine->AnalyzeForeignTable = CStoreAnalyzeForeignTable; fdwRoutine->PlanForeignModify = CStorePlanForeignModify;//5  fdwRoutine->BeginForeignModify = CStoreBeginForeignModify;//6    fdwRoutine->ExecForeignInsert = CStoreExecForeignInsert;//7  fdwRoutine->EndForeignModify = CStoreEndForeignModify;//8    PG_RETURN_POINTER(fdwRoutine);}

  优点2:数据之中分块存款和储蓄,对于块数据举行了max以致min值的记录,在询问时亦可实行跳块查询

二、安装使用

  那几个外界表扩充仅仅对orc格式的公文实行读操作,并从未写操作,写文件的操作是接收java语言开采的。

  若是插入一条数据,则此条数据占用了二个条带的磁盘空间

  

  RCFile格式比较orc格式:

  

  优点3:在开展询问时,并非将有着的磁盘数据都load到内部存款和储蓄器,而是采用列依照记录的skiplist中的offset来load所须要的多寡,降低IO

postgres=# create extension cstore_fdw;CREATE EXTENSIONpostgres=# create server cstore_server foreign data wrapper cstore_fdw ;CREATE SERVERpostgres=# CREATE FOREIGN TABLE customer_reviewspostgres-# (postgres(#   customer_id TEXT,postgres(#   review_date DATE,postgres(#   review_rating INTEGER,postgres(#   review_votes INTEGER,postgres(#   review_helpful_votes INTEGER,postgres(#   product_id CHAR(10),postgres(#   product_title TEXT,postgres(#   product_sales_rank BIGINT,postgres(#   product_group TEXT,postgres(#   product_category TEXT,postgres(#   product_subcategory TEXTpostgres(# )postgres-# SERVER cstore_serverpostgres-# OPTIONS(compression 'pglz');

  [root@centos01 ~]# git clone

[postgres@centos01 13056]$ ll /home/postgres/db1/cstore_fdw/13056

  

  1、2、3、4构成了查询操作 举例: select * from customer_reviews;

postgres=# insert into customer_reviews select * from customer;INSERT 0 176774postgres=# select pg_relation_size('customer'); pg_relation_size ------------------    145489920(1 row)

  还恐怕有便是对于RCfile这种格式,字符串类型的降低并不曾很显然的管理,不像orc格式,orc带有字典压缩管理,而RCFile并从未

百家了乐八大技巧 ,一、cstore_fdw的简介

  [root@centos01 ~]# make && make install

  

  配置postgres.conf文件末尾增添:

  shared_lom599乐百家手机 ,preload_libraries = 'cstore_fdw'