网站建设资讯

NEWS

网站建设资讯

关于postgresql加载的信息

为什么PostgreSQL比MongoDB还快

1)数据加载

鹤山网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

从服务端资源消耗的角度看,是MongoDB的性能是PostgreSQL的2倍。但是如果数据加载不能很好的并发展开,让mongoimport成为了瓶颈,那应该算打平。

另外,EnterpriseDB的数据加载的测试结果和我的结果差异比较大,可能是因为EnterpriseDB的测试中,数据量超过了系统内存量,IO对测试结果的影响开始显现。

2)数据插入

从服务端资源消耗的角度看,两者其实相差不大。EnterpriseDB的测试结果被mongo客户端的性能瓶颈绑架了。

3)数据查询

对无匹配数据(或少量匹配数据)的索引查询,PostgreSQL的性能是MongoDB的4倍(这一点也有点令人不解,同样是走索引的单点查询,为什么差距就这么大呢?)。

虽然EnterpriseDB的测试结果也表明PostgreSQL的性能是MongoDB 4倍左右,但EnterpriseDB的测试方法是有问题的。

4)数据大小

MongoDB的数据大小大约是PostgreSQL的3倍,这和EnterpriseDB的测试结果是一致的。

PostgreSQL在NoSQL方面的表现确实抢眼。PostgreSQL不仅是SQL+NoSQL+ACID的完美组合,性能还比MongoDB技高一筹(分布式集群上MongoDB更有优势)。

如何加快PostgreSQL结巴分词加载速度

PostgreSQL的全文检索接口是开放API的,所以中文分词的插件也非常多,例如常用的scws分词插件,还有结巴分词的插件。

但是你在使用结巴分词插件的时候,有没有遇到这样的问题。

每个会话,第一次查询会比较慢,接下来的查询就快了。

借助Postgresql生成热力图

热力图,在空间数据可视化场景中是一个非常常见的需求。首先看下一个完整的热力图效果。

前端实现热力图的原理可以看该 博文 。本文不是探究热力图前端实现原理的,是来探讨由于热力图一次性加载的点过多,产生卡顿的问题。

前面的 博文 也提出了自己的解决办法。但是若数据居多(10w+),光数据传输就头疼。现有的热力图的前端组件有很多,可以用openlayer、高德地图js、百度地图js、mapbox等。但是大多数的数据结构的都是下面这种形式。

所以需要在后台将下面策略实现,给前台页面传输合适的数据就行。

借助postgresql的width_bucket和postgis,仅用0.4s将20W的数据压缩到2500,这就大大降低了数据传输和渲染的压力。同时也不需要对已有的GIS前端热力图组件进行修改。

德哥的文章

数据可视化:浅谈热力图如何在前端实现

linux下postgresql 9.4 怎么安装

postgresql 9.4 在linux环境的安装步骤详解

这里实验的环境系统:centos 6.4 64位

软件:postgresql 9.4.1

软件下载

cd /usr/local/src/

wget

安装依赖包

yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake

安装postgresql

tar xf postgresql-9.4.1.tar.gz

cd postgresql-9.4.1

./configure --prefix=/usr/local/pgsql --with-perl --with-python --with-libxml --with-libxslt

gamke

gamke install

安装PG插件

cd /usr/local/src/postgresql-9.4.1/contrib

gmake

gmake install

加载动态库

echo "/usr/local/pgsql/lib" /etc/ld.so.conf.d/pgsql.conf

ldconfig

初始化数据库

创建用户postgres

useradd postgres

echo "postgres"|passwd --stdin postgres

创建PG数据目录

mkdir -p /data/pg/data

chown -R postgres:postgres /data/pg

/usr/local/pgsql/bin/initdb --no-locale -U postgres -E utf8 -D /data/pg/data -W

(在初始化的时候,看提示添加超级用户的密码)

备注

initdb [选项]... [DATADIR]

-A, --auth=METHOD 本地连接的默认认证方法

-D, --pgdata=DATADIR 当前数据库簇的位置

-E, --encoding=ENCODING 为新数据库设置默认编码

--locale=LOCALE 为新数据库设置默认语言环境

--lc-collate, --lc-ctype, --lc-messages=LOCALE

--lc-monetary, --lc-numeric, --lc-time=LOCALE

为新的数据库簇在各自的目录中分别

设定缺省语言环境(默认使用环境变

量)

--no-locale 等同于 --locale=C

--pwfile=文件名 对于新的超级用户从文件读取口令

-T, --text-search-config=CFG

缺省的文本搜索配置

-U, --username=NAME 数据库超级用户名

-W, --pwprompt 对于新的超级用户提示输入口令

-X, --xlogdir=XLOGDIR 当前事务日志目录的位置

非普通使用选项:

-d, --debug 产生大量的除错信息

-L DIRECTORY 输入文件的位置

-n, --noclean 出错后不清理

-s, --show 显示内部设置

其它选项:

-?, --help 显示此帮助, 然后退出

-V, --version 输出版本信息, 然后退出

如果没有指定数据目录, 将使用环境变量 PGDATA

配置运行环境变量(方便管理)

切换到root

vim /etc/profile

添加以下代码:

PGDATA=/data/pg/data

PGHOST=127.0.0.1

PGDATABASE=postgres

PGUSER=postgres

PGPORT=5432

PATH=/usr/local/pgsql/bin:$PATH

export PATH

export PGDATA PGHOST PGDATABASE PGUSER PGPORT

执行生效

source /etc/profile

postgresql服务管理

启动:

pg_ctl start -D /data/pg/data

重启:

pg_ctl restart -D /data/pg/data

停止:

pg_ctl stop -D /data/pg/data

强制重启:

pg_ctl restart -D /data/pg/data -m f

强制停止:

pg_ctl stop -D /data/pg/data -m f

-m f 指定快速关闭

加载配置:

pg_ctl reload -D /data/pg/data

显示服务状态:

pg_ctl status -D /data/pg/data

连接数据库

psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W

-d 指定数据库 ,-W 输入密码 , -U 指定用户,-p 指定端口,-h 指定IP

复制PostgreSQL执行脚本

cp /usr/local/src/postgresql-9.4.1/contrib/start-scripts/linux /etc/init.d/postgresql

chmod +x /etc/init.d/postgresql

修改/etc/init.d/postgresql

把PGDATA改成PGDATA=/data/pg/data

加入开机启动

chkconfig postgresql on

管理PG服务时也可以直接用上面启动脚本

启动:service postgresql start

停止:service postgresql stop

重启:service postgresql restart

加载:service postgresql reload

状态:serivce postgresql status


分享名称:关于postgresql加载的信息
文章位置:http://cdweb.net/article/dscocep.html