一,     安装

环境介绍:官方说postgresql 9.3 版本之后支持HStore 插件,目前最新版本10.3

本次测试版本:10.1 或 9.6.2

进入psql 运行环境,使用管理员(高级别用户)进入服务器,连接某个应用数据库。

# \c 命令,数据库名 , 高级别用户

 \c databasename postgres;

# 启用插件

create extension hstore;

# 切换普通用户

\c databasename ir_user;

# 察看Hstore 使用情况

\dT hstore;

二,     使用Hstore

新增列(Hstore)

alter table tbl_name add column column_name hstore;

给列赋值

update tbl_name set column_name =('exp=>' || exp || ', wealth=>' || wealth )::hstore;

查询

Select * from tbl_name where column_name ? 'exp’

修改

Select * from tbl_name where column_name || ‘exp=>new_value’::hstore

新增

Select * from tbl_name where column_name || ‘exp2=>value2’::hstore

删除

Select * from tbl_name where column_name - ‘exp2’

三,     性能测试

a)      数据准备,分拣平台2kw条子域名数据,列(20个)

数据表 1  : select * from test.tmp_jackical_hstore2  limit 2;

数据表2  : select * from test.bt_sub_domain limit 2;

测试sql1(hstore)    : select * from test.tmp_jackical_hstore2 where domain_hstore2 ? 'zcrbjx.cn.china.cn';

测试sql2       :select * from test.bt_sub_domain where domain_name = 'zcrbjx.cn.china.cn';

两个表都没有加索引      语句1 : 17.561 s

    语句2:  5.219  s

b)      追加索引

给 hstore 列加上 gist 索引

CREATE INDEX ***** ON test.tmp_jackical_hstore2 USING gist(domain_hstore2);

给 没有hstore 的表加 btree 索引 :

CREATE INDEX **** ON test.bt_sub_domain USING btree(domain_name );

再次测试      语句1 :   7 s 左右

语句2 :   0.122 s

被正常数据秒杀了。。。

继续优化 ....

c)      再次给Hstore查询条件加索引

给 hstore 列继续 加上 btree  索引 :   CREATE INDEX ****  ON test.tmp_jackical_hstore2 USING btree(hstore_keys(domain_hstore2));

到目前未知,己给hstore 这列加了,gist 与 btree索引 了,来看看性能吧。

测试语句1: select * from test.tmp_jackical_hstore2 where hstore_keys(domain_hstore2) = 'zcrbjx.cn.china.cn';

测试语句2: select * from test.bt_sub_domain where domain_name = 'zcrbjx.cn.china.cn';

再再次测试 语句1 : 0.122s

语句2 : 0.122s

结论:Hstore 提供key-value 保存形式,但性能不大好,需要加入有针对性查询的索引才能提高性能。

附函数:hstore_keys

CREATE OR REPLACE FUNCTION "test"."hstore_keys"("field" hstore)
RETURNS "pg_catalog"."text" AS $BODY$
select array_to_string(akeys($1),',');
$BODY$
LANGUAGE 'sql' IMMUTABLE COST 100
;
ALTER FUNCTION "test"."hstore_keys"("field" hstore) OWNER TO "ir_user";

官方语法:https://www.postgresql.org/docs/9.6/static/hstore.html

Postgresql HStore 插件试用小结的更多相关文章

  1. JQuery插件使用小结

    JQuery插件使用小结

  2. uploadify在asp.net中的试用小结

    花了差不多一下午的时间,总算把uploadify插件运行起来,在此对自己遇到的问题以及过程做一个小结. 一.使用步骤 1.在官网下载最新的插件包,并将包解压. 2.新建asp.net web项目,将解 ...

  3. PostgreSQL常用插件收集

    hexdump -C 数据表文件 -- 查看表文件中数据. pg_stat_statements pgcompacttable -- 在减少锁的情况下,清理表和索引的老空间. pg_repack--P ...

  4. postgresql 安装插件

    最近由于工作需要,学习了citusdata 插件,在按照官方文档装好postgresql 之后,不能在psql 中正常启用其它插件  如 : "create extension pg_trg ...

  5. PostgreSQL hstore 列性能提升一例

    PostgreSQL 支持hstore 来存放KEY->VALUE这类数据, 事实上也相似于ARRAY或者JSON类型.  要高效的使用这类数据,当然离不开高效的索引.我们今天就来看看两类不同的 ...

  6. fullpage.js全屏滚动插件使用小结

    刚做好公司网站,通过全屏滚动,显著提高了官网的浏览体验.遂总结一下使用fullpage.js的方法.欢迎指正 一. fullpage.js简介 fullpage.js是一套实现浏览器全屏滚动的js插件 ...

  7. javascript插件编写小结

    写JS插件,最好是先通过HTML方式将展示结果显示出来,然后再封装成JS插件,将其画出来.JS模板如下: (function($){ $.fn.fnName = function(options){ ...

  8. jquery validate 插件使用小结

    项目中整合了jquery validate插件,仿照别人的使用写了我的表单验证,结果不起作用.然后就各种找原因. 在网上下了jquery validate插件的完整包,看了看里边的例子,跟我的使用貌似 ...

  9. 阿里巴巴Java规约插件试用

    阿里Java开发规约Eclipse插件介绍 阿里巴巴集团配合<阿里巴巴Java开发手册>PDF终极版开发的IDE插件,目前包括IDEA插件.Eclipse插件. 安装 检查环境 插件要求: ...

随机推荐

  1. Samba文件共享服务器配置

    Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序:NFS ...

  2. 深入浅出SharePoint——定制保存Item按钮

    <script type="text/javascript" src="/_layouts/style/jquery-1.4.4.min.js">& ...

  3. Mininet自定义网络拓扑

    在Mininet上的网络拓扑有两种方式 第一种 用mininet自带的miniedit可视化工具,在mininet/mininet/examples/的目录下的一个miniedit.py,运行这个文件 ...

  4. 判断元素(expected_conditions)

    判断元素 如何判断一个元素是否存在,如何判断 alert 弹窗出来了,如何判断动态的元素等等一系列的判断,在 selenium 的 expected_conditions 模块收集了一系列的场景判断方 ...

  5. 【RabbitMQ】1、安装

    1.  下载 下载地址:http://www.rabbitmq.com/download.html 2.  windows下安装 2.1. 安装Erlang 下载:http://www.erlang. ...

  6. Java类修饰符的使用与作用以及常见问题

    首先明确,类是放在文件里的,在文件里面的不同位置就有不同的作用,就是不同类型的类. 1, 顶级类or外部类:包括两种,一个文件中与文件名同名称的类我们称作顶级类(也是外部类),如果在一个文件中的一个类 ...

  7. BZOJ1016:[JSOI2008]最小生成树计数(最小生成树,DFS)

    Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...

  8. Loadrunner之HTTP脚本编写

    Loadrunner之HTTP脚本编写 刚学习性能测试的时候还是建议以录制脚本为好,从录制的脚本中去了解脚本结构,各个函数的用法,慢慢再去尝试自己去编写脚本,如果想往技术方向发展,建议最好学习一门编程 ...

  9. HDU 1599 find the mincost route(floyd求最小环 无向图)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1599 find the mincost route Time Limit: 1000/2000 MS ...

  10. ASP.NET Core AD 域登录 (转载)

    在选择AD登录时,其实可以直接选择 Windows 授权,不过因为有些网站需要的是LDAP获取信息进行授权,而非直接依赖Web Server自带的Windows 授权功能. 当然如果使用的是Azure ...