扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
# yum install
公司主营业务:网站制作、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出辛集免费做网站回馈大家。
# yum list postgres*
# yum install postgresql94-server
# su - postgres
$ /usr/pgsql-9.4/bin/initdb -D /var/lib/pgsql/9.4/data
# systemctl enable postgresql-9.4
# systemctl start postgresql-9.4
#su - postgres
$createuser -W zabbix
$createdb -U postgres -O zabbix -E UTF8 zabbix
$psql
# cp -f /var/lib/pgsql/9.4/data/pg_hba.conf /var/lib/pgsql/9.4/data/pg_hba.conf.bk
#vi /var/lib/pgsql/9.4/data/pg_hba.conf
#service postgresql-9.4 restart
#ps ax | grep postgres
#psql -U zabbix -d zabbix -h 127.0.0.1 -p 5432
#\q
#exit
# rpm -ivh
# yum-config-manager --enable rhel-7-server-optional-rpms
# yum install zabbix-server-pgsql zabbix-web-pgsql
# yum install zabbix-agent
# yum install zabbix-get
# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
#cp -f /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bk
#vi /etc/zabbix/zabbix_server.conf
#systemctl enable zabbix-server.service
#systemctl restart zabbix-server.service
# yum install httpd php php-pgsql php-mbstring php-bcmath php-xml php-gd
# yum install readline-devel zlib-devel
# cp /etc/php.ini /etc/php.ini.org
# vi /etc/php.ini
# cd /var/www/html/
# ln -s /usr/share/zabbix .
# systemctl enable httpd.service'.
# systemctl status httpd
# cp -f /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.org
# vi /etc/zabbix/zabbix_agentd.conf
# systemctl enable zabbix-agent.service
# systemctl start zabbix-agent.service
接下来就是登录Web端初始化设定及添加Agent啦
现在就动手----阿里云ECS
了存储、查询和修改空间关系的能力。本文中 ‘PostgreSQL’ 指代基本的关系数据库功能,而 ‘PostGIS’ 指代扩展的空间操作特性。
客户端-服务器构架
PostgreSQL 同众多数据库产品一样,采用客户端-服务器构架。客户端向服务器发出请求并得到响应。这种机制同浏览器从网络服务器获取网页类似。在 PostgreSQL 中,请求以 SQL 语言发出,而响应多为从数据库提取的表单。
客户端与服务器可以部署在同一台设备上,即 PostgreSQL 可以在单一的计算机上使用。借由系统内部的 ‘loopback’ 通信机制,数据库系统可以进行私密通讯。除非专门配置,外界是不能访问这些信息的。
本位介绍三种客户端:命令行, Quantum GIS , pgAdmin 图形化数据库客户端。
创造具有空间信息处理能力的数据库
命令行客户端在终端模拟器(Terminal Emulator)中运行。在 Applications 菜单的 Accessories 中打开一个终端模拟器,将显示一个 Unix 风格的命令行界面。输入:
psql -V
回车确认,将显示 PostgreSQL 版本号。
一个 PostgreSQL 服务器中,可以将不同的任务组织到不同的数据库。每个数据库独立运作,拥有专门的表单、显示、用户等。访问 PostgreSQL 数据库时将指定一个数据库。
服务器上数据库列表通过以下命令查询:
psql -l
输出将罗列 Live 上配置的几个数据库。这里演示新建一个。
PostgreSQL 使用 createdb 工具创建数据库。这里建立的数据库应带有 PostGIS 的扩展功能,因此需要指定相应的模板。这里将新建数据库称为 demo 。命令为:
createdb-Ttemplate_postgisdemo
现在执行 psql-l 应当可以看到 demo 数据库。
也可以使用 SQL 语言创建 PostGIS 数据库。首先使用 dropdb 命令删除之前创建的数据库,然后使用 psql 命令开启 SQL 命令解析器:
dropdbdemopsql-dpostgres
这样就连接到了一个通用的系统数据库 postgres 。输入 SQL 命令建立新数据库:
postgres=# CREATE DATABASE demo TEMPLATE=template_postgis;
现在可以转换连接到新建的数据库。若重新连接时可以使用 psql-ddemo 命令。但在 psql 系统内部也可以使用以下命令:
postgres=# \c demo
一个信息页面将显示当前已连接 demo 数据库。输入 \dt 列出当前数据库内的表单,输出如下:
demo=# \dtListofrelationsSchema|Name|Type|Owner--------+------------------+-------+-------public|geometry_columns|table|userpublic|spatial_ref_sys|table|user(2rows)
这两个表格是 PostGIS 默认的。其中 spatial_ref_sys 存储着合法的空间坐标系统。利用 SQL 查询查看:
demo=# SELECT srid,auth_name,proj4text FROM spatial_ref_sys LIMIT 10;srid|auth_name|proj4text------+-----------+--------------------------------------3819|EPSG|+proj=longlat+ellps=bessel+towgs...3821|EPSG|+proj=longlat+ellps=aust_SA+no_d...3824|EPSG|+proj=longlat+ellps=GRS80+towgs8...3889|EPSG|+proj=longlat+ellps=GRS80+towgs8...3906|EPSG|+proj=longlat+ellps=bessel+no_de...4001|EPSG|+proj=longlat+ellps=airy+no_defs...4002|EPSG|+proj=longlat+a=6377340.189+b=63...4003|EPSG|+proj=longlat+ellps=aust_SA+no_d...4004|EPSG|+proj=longlat+ellps=bessel+no_de...4005|EPSG|+proj=longlat+a=6377492.018+b=63...(10rows)
以上显示确认了该数据库已经建立空间操作功能。数据库中的 geometry_columns 用于记录那些表格是有空间信息的。
手工建立空间数据表格
空间数据库已经建立,现在可以建立具有空间信息的表格。
首先建立一个常规的表格存储有关城市(cities)的信息。这个表格有两栏,一个是 ID 编号,一个是城市名:
demo=# CREATE TABLE cities ( id int4, name varchar(50) );
现在添加一个空间栏用于存储城市的位置。习惯上这个栏目叫做 the_geom 。它记录了数据为什么类型(点、线、面)、有几维(这里是二维)以及空间坐标系统。此处使用 EPSG:4326 坐标系统:
demo=# SELECT AddGeometryColumn ('cities', 'the_geom', 4326, 'POINT', 2);
完成后,查询 cities 表单应当显示这个新栏目。同时页面将显示当前表达没有记录(0 rows)。
demo=# SELECT * from cities;id|name|the_geom----+------+----------(0rows)
为添加记录,需要使用 SQL 命令。对于空间栏,使用 PostGIS 的 ST_GeomFromText 可以将文本转化为坐标与参考系号的记录:
demo=# INSERT INTO cities (id, the_geom, name) VALUES (1,ST_GeomFromText('POINT(-0.1257 51.508)',4326),'London, England');demo=# INSERT INTO cities (id, the_geom, name) VALUES (2,ST_GeomFromText('POINT(-81.233 42.983)',4326),'London, Ontario');demo=# INSERT INTO cities (id, the_geom, name) VALUES (3,ST_GeomFromText('POINT(27.91162491 -33.01529)',4326),'East London,SA');
当然,这样的输入方式难以操作。其它方式可以更快的输入数据。就目前来说,表格内已经有了一些城市数据,可以先进行查询等操作。
简单查询
标准的 SQL 操作都可以用于 PostGIS 表单:
demo=# SELECT * FROM cities;id|name|the_geom----+-----------------+----------------------------------------------------1|London,England|0101000020E6100000BBB88D06F016C0BF1B2FDD2406C149402|London,Ontario|0101000020E6100000F4FDD478E94E54C0E7FBA9F1D27D45403|EastLondon,SA|0101000020E610000040AB064060E93B4059FAD005F58140C0(3rows)
这里的坐标是无法阅读的 16 进制格式。要以 WKT 文本显示,使用 ST_AsText(the_geom) 或 ST_AsEwkt(the_geom) 函数。也可以使用 ST_X(the_geom) 和 ST_Y(the_geom) 显示一个维度的坐标:
demo=# SELECT id, ST_AsText(the_geom), ST_AsEwkt(the_geom), ST_X(the_geom), ST_Y(the_geom) FROM cities;id|st_astext|st_asewkt|st_x|st_y----+------------------------------+----------------------------------------+-------------+-----------1|POINT(-0.125751.508)|SRID=4326;POINT(-0.125751.508)|-0.1257|51.5082|POINT(-81.23342.983)|SRID=4326;POINT(-81.23342.983)|-81.233|42.9833|POINT(27.91162491-33.01529)|SRID=4326;POINT(27.91162491-33.01529)|27.91162491|-33.01529(3rows)
空间查询:
PostGIS 为 PostgreSQL 扩展了许多空间操作功能。以上已经涉及了转换空间坐标格式的 ST_GeomFromText 。多数空间操作以 ST(spatial type)开头,在 PostGIS 文档相应章节有罗列。这里回答一个具体的问题:以米为单位并假设地球是完美椭球,上面三个城市相互的距离是多少?
demo=# SELECT p1.name,p2.name,ST_Distance_Sphere(p1.the_geom,p2.the_geom) FROM cities AS p1, cities AS p2 WHERE p1.id p2.id;name|name|st_distance_sphere-----------------+-----------------+--------------------London,Ontario|London,England|5875766.85191657EastLondon,SA|London,England|9789646.96784908EastLondon,SA|London,Ontario|13892160.9525778(3rows)
输出显示了距离数据。注意 ‘WHERE’ 部分防止了输出城市到自身的距离(0)或者两个城市不同排列的距离数据(London, England 到 London, Ontario 和 London, Ontario 到 London, England 的距离是一样的)。尝试取消 ‘WHERE’ 并查看结果。
这里采取不同的椭球参数(椭球体名、半主轴长、扁率)计算:
demo=# SELECT p1.name,p2.name,ST_Distance_Spheroid(p1.the_geom,p2.the_geom,'SPHEROID["GRS_1980",6378137,298.257222]')FROMcitiesASp1,citiesASp2WHEREp1.idp2.id;name|name|st_distance_spheroid-----------------+-----------------+----------------------London,Ontario|London,England|5892413.63776489EastLondon,SA|London,England|9756842.65711931EastLondon,SA|London,Ontario|13884149.4140698(3rows)
制图
以 PostGIS 数据制图需要相应的客户端支持。包括 Quantum GIS、gvSIG、uDig 在内的多种客户端均可以。以下使用 Quantum GIS:
从 Desktop GIS 菜单启动 Quantum GIS 并在其 layer 菜单选择 AddPostGISlayers 。连接到 Natural Earth PostGIS 数据库的参数在 Connections 下拉菜单中有。这里可以定义和储存其它的配置。点击 Edit 可以查看具体参数。点击 Connect 连接:

系统将显示所有空间信息表供选择:

选择 lakes 湖泊表单并点击底部的 Add 添加。顶部的 Load 可以载入新的数据库连接配置。数据将被导入:

界面上显示出湖泊的分布。QGIS 并不理解湖泊一词的含义,也许不会自动使用蓝色。请查看其手册了解如何设置。这里缩放到加拿大一处著名的湖泊群。
自动创建空间数据表单
OSGeo Live 的多数桌面 GIS 系统都可以将 shp 等文件导入数据库。这里依然使用 QGIS 演示。
QGIS 中导入 shp 可以使用 PostGIS Manager 插件。在 Plugins 菜单选择 FetchPlugins 导入最新的官方插件列表(需要网络连接)。找到 PostGISManager 点击 Installplugin 安装。

完成后,在 Plugin 菜单点击 PostGIS Manager 启动。也可以点击工具栏上大象与地球的图标。
该插件将连接 Natural Earth 数据库。若提示输入密码,留空即可。在开启的界面中,选择表单可以显示相应的信息。预览(Preview)选项卡可以显示地图预览。这里选择了 populated places 图层并缩放到一个小岛:

接下来使用 PostGIS Manager 将 shp 导入数据库。这里使用 R 统计扩展包含的 North Carolina sudden infant death syndrome (SIDS) 数据:
在 Data 菜单选择 Loaddatafromshapefile 选项。点击 ... 选中 R maptools 中的 sids.shp 。
常用数据库软件:IBM 的DB2:第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。甲骨文公司的Oracle:支持最广泛的操作系统平台。Informix的Informix Sybase公司的SybasePostgreSQLSun公司的mySQL:体积小、速度快、总体拥有成本低,开放源码,被广泛地应用在Internet上的中小型网站中。Microsoft的SQL Server、Access数据库、FoxPro数据库 一、SQL Server 的发展历史
由关系数据库 Sybase演变而来。
1988年,由Microsoft、Sybase和Ashton-Tate三家公司共同开发OS/2版本。
94年后,Sybase公司致力于开发UNIX系统下的数据库系统;Microsoft公司继续开发基于WindowsNT的SQL Server系列数据库系统
96年,SQL Server 6.5版本;98年,SQL Server 7.0版本;2000年,正式发行SQL Server 2000版本。
二、SQL Server 2000特点
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.与Windows NT完全集成,利用了NT的许多功能(如发送和接受消息,管理登录安全性等)。并很好地与Microsoft BackOffice产品集成。
5.具有很好的伸缩性。(可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用)
6.对Web技术的支持。使用户能够很容易地将数据库中的数据发布到Web页面上。
7.提供数据仓库功能。(原来只在Oracle和其他更昂贵的DBMS中才有)
我在阿里云服务器(Windows Server 2008)上安装PostgreSQL也遇到这种情况,这是在创建数据库时发生的异常。参考了很多做法,后来这样解决的,可以照此试试看。2) 使用新登录账号andy登录,并创建好安装目录c:\postgreSQL,然后对该目录授予users组的全部控制权限;就这样安装成功了。与之前安装的不同之处在于:1) 没有使用Administrator账号来执行安装; 2) 安装主目录事先就创建好了,并授予users的全部权限出现了只有的情况应该是手机中毒了,你可以用腾讯手机管家杀毒。用腾讯手机管家杀毒的步骤是:到官网下载安装最新版本的腾讯手机管家,安装后更新病毒库-再在手机桌面点击“腾讯手机管家”-选择“病毒查杀”-选择“快速扫描”(或者“全盘扫描”)即可对手机进行彻底杀毒。看不太清,你那个可能是系统补丁文件,如果是的话,可以删除,系统不定期更新,只要更新就有新的下载,你桌面就多几个,呵呵,正常在C盘的系统文件夹里,你有360卫士,里面有设置位置或清除的,可以搞定这个,把下载补丁的位置改一下,具体你自己找下吧,我现在机器里没360卫士。应该说明白了吧。或者是什么软件的数据包?.TMP文件是系统临时文件,比如你打开网页什么的都随时产生,历史记录及时清,360浏览器有个网页关闭就即时清理。位置也是可以设置的。总之别放桌面。360卫士清理临时文件,更改存放位置,可以解决问题。这个能找到不,选移动文件夹,搞定亲,打开浏览器,菜单栏,点工具,点internet选项,就是上面的图片,然后点浏览历史记录里面的设置,出现下面的窗口,点移动文件夹顺便点个赞,你行的要离开会,再有问题等下午了不是这个临时文件,这个是正常的,我不管打开什么东西,都有这些垃圾,不光360浏览器,我想彻底根治,没有别的办法了吗。杀过了,你把你QQ给我,我加下你。关掉影音软件。进入游戏后,点击设置,设置成无边框,分辨率要跟桌面的分辨率一致。在英雄联盟官网上,下载手动安装包并安装,重启游戏即可。1.注消或重启电脑,然后再试着删除。2.进入“安全模式删除”。3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除。4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。5.在任务管理器中结束Explorer.exe进程,然后在命令提示符窗口删除文件。6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹。运行磁盘扫描,并扫描文件所在分区,扫描前确定已选上修复文件和坏扇区,全面扫描所有选项,扫描后再删除文件。某些媒体播放中断或正在预览时会造成无法删除。在“运行”框中输入:REGSVR32 /U SHMEDIA.DLL,注销掉预读功能。或删除注册表中下面这个键值:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489-5FE6850DC73E}\InProcServer32]。由于反病毒软件在查毒时会占用正在检查的文件,从而导致执行删除时提示文件正在使用,这时可试着暂时关闭它的即时监控程序,或许可以解决。OFFice的非法关闭也会造成文件无法删除或改名。重新运行该程序,然后正常关闭,再删除文件。右击要删除的文件夹,选择“添加到压缩文件”。在弹出的对话框中选中“压缩后删除源文件,”随便写个压缩包名,点确定。如果是2000和xp系统,请先确定是否有权限删除这个文件或文件夹。如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面文件,Win98中是Win386.SWP,Win2000/XP是pagefile.sys。注意要在DOS下删除。使用文件粉碎机,如File Pulverizer,可以彻底删除一些顽固文件。文件夹无法删除,未必就是不好的事情,如果把一些重要的文件放在这个目录中,不就可以避免误删了吗?一个文件名只包含空格的文件夹在Windows中是不允许创建和删除的,但在DOS下却可以创建文件名包含\的文件夹。
1. 概述
cstore_fdw实现了 PostgreSQL 数据库的列式存储。列存储非常适合用于数据分析的场景,数据分析的场景下数据是批量加载的。
这个扩展使用了Optimized Row Columnar (ORC)数据存储格式,ORC改进了Facebook的RCFile格式,带来如下好处:
压缩:将内存和磁盘中数据大小削减到2到4倍。可以扩展以支持不同压缩算法。
列投影:只提取和查询相关的列数据。提升IO敏感查询的性能。
跳过索引:为行组存储最大最小统计值,并利用它们跳过无关的行。
2. 使用
cstore_fdw的安装和使用都非常简单,可以参考官方资料。
thub.com/citusdata/cstore_fdw
注)注意cstore_fdw只支持PostgreSQL9.3和9.4 。
下面做几个简单的性能对比,看看cstore_fdw究竟能带来多大的性能提升。
2.1 数据加载
2.1.1 普通表
CREATE TABLE tb1
(
id int,
c1 TEXT,
c2 TEXT,
c3 TEXT,
c4 TEXT,
c5 TEXT,
c6 TEXT,
c7 TEXT,
c8 TEXT,
c9 TEXT,
c10 TEXT
);
注:要和普通表的全表扫描作对比,所以不建主键和索引。
[postgres@node2 chenhj]$ time psql -p 40382 -At -F, -c "select id,id::text,id::text,id::text,id::text,id::text,id::text,id::text,id::text,id::text,id::text from generate_series(1,10000000) id"|time psql -p 40382 -c "copy tb1 from STDIN with CSV"
COPY 10000000
1.56user 1.00system 6:42.39elapsed 0%CPU (0avgtext+0avgdata 7632maxresident)k
776inputs+0outputs (17major+918minor)pagefaults 0swaps
real 6m42.402s
user 0m15.174s
sys 0m14.904s
postgres=# select pg_total_relation_size('tb1'::regclass);
pg_total_relation_size
------------------------
1161093120
(1 row)
postgres=# \timing
Timing is on.
postgres=# analyze tb1;
ANALYZE
Time: 11985.070 ms
插入1千万条记录,数据占用存储大小1.16G,插入耗时6分42秒,分析耗时12秒。
2.1.2 cstore表
$ mkdir -p /home/chenhj/data94/cstore
CREATE EXTENSION cstore_fdw;
CREATE SERVER cstore_server FOREIGN DATA WRAPPER cstore_fdw;
CREATE FOREIGN TABLE cstb1
(
id int,
c1 TEXT,
c2 TEXT,
c3 TEXT,
c4 TEXT,
c5 TEXT,
c6 TEXT,
c7 TEXT,
c8 TEXT,
c9 TEXT,
c10 TEXT
)
SERVER cstore_server
OPTIONS(filename '/home/chenhj/data94/cstore/cstb1.cstore',
compression 'pglz');
[postgres@node2 chenhj]$ time psql -p 40382 -At -F, -c "select id,id::text,id::text,id::text,id::text, id::text,id::text,id::text,id::text,id::text,id::text from generate_series(1,10000000) id"|time psql -p 40382 -c "copy cstb1 from STDIN with CSV"
COPY 10000000
1.53user 0.78system 7:35.15elapsed 0%CPU (0avgtext+0avgdata 7632maxresident)k
968inputs+0outputs (20major+920minor)pagefaults 0swaps
real 7m35.520s
user 0m14.809s
sys 0m14.170s
[postgres@node2 chenhj]$ ls -l /home/chenhj/data94/cstore/cstb1.cstore
-rw------- 1 postgres postgres 389583021 Jun 23 17:32 /home/chenhj/data94/cstore/cstb1.cstore
postgres=# \timing
Timing is on.
postgres=# analyze cstb1;
ANALYZE
Time: 5946.476 ms
插入1千万条记录,数据占用存储大小390M,插入耗时7分35秒,分析耗时6秒。
使用cstore列存储后,数据占用存储大小降到普通表的3分之1。需要说明的是,由于所有TEXT列填充了随机数据,压缩率不算高,某些实际的应用场景下压缩效果会比这更好。
2.2 Text列的like查询性能对比
2.2.1 普通表
清除文件系统缓存,并重启PostgreSQL
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# free
total used free shared buffers cached
Mem: 2055508 771356 1284152 0 9900 452256
-/+ buffers/cache: 309200 1746308
Swap: 4128760 387624 3741136
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
[root@node2 ~]# free
total used free shared buffers cached
Mem: 2055508 326788 1728720 0 228 17636
-/+ buffers/cache: 308924 1746584
Swap: 4128760 381912 3746848
对Text列执行like查询
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.42 0.00 95.40
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.55 330.68 212.08 7351441 4714848
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m7.051s
user 0m0.001s
sys 0m0.004s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.43 0.00 95.39
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.90 381.53 211.90 8489597 4714956
耗时7.1秒,产生IO读1.14G,IO写108K。
不清文件系统缓存,不重启PostgreSQL,再执行一次。消耗时间降到1.6秒,几乎不产生IO。
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.43 0.00 95.39
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.81 332.20 213.06 7350301 4714364
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m1.601s
user 0m0.002s
sys 0m0.001s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.43 0.00 95.38
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.80 332.12 213.01 7350337 4714364
2.2.2 cstore表
清除文件系统缓存,并重启PostgreSQL
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
对Text列执行like查询
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.38 0.00 95.45
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.12 376.42 209.04 8492017 4716048
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from cstb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m2.786s
user 0m0.002s
sys 0m0.003s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.38 0.00 95.44
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.12 378.75 208.89 8550761 4716048
耗时2.8秒,产生IO读59M,IO写0K。执行时间优化的虽然不是太多,但IO大大减少,可见列投影起到了作用。
不清文件系统缓存,不重启PostgreSQL,再执行一次。消耗时间降到1.4秒,几乎不产生IO。
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.36 0.00 95.47
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.75 376.33 207.58 8550809 4716524
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from cstb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m1.424s
user 0m0.002s
sys 0m0.001s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.36 0.00 95.47
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.70 375.96 207.38 8550809 4716588
2.3 对Int列执行=查询
2.3.1 普通表
清除文件系统缓存,并重启PostgreSQL后
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
对Int列执行=查询
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.79 0.00 0.37 3.33 0.00 95.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.25 373.21 205.67 8560897 4717624
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where id =666666"
count
-------
1
(1 row)
real 0m6.844s
user 0m0.002s
sys 0m0.006s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.79 0.00 0.37 3.34 0.00 95.49
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.60 422.57 205.54 9699161 4717708
耗时6.8秒,产生IO读1.14G,IO写84K
不清缓存,再执行一次。消耗时间降到1.1秒,几乎不产生IO。
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.79 0.00 0.37 3.33 0.00 95.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.44 421.37 204.97 9699177 4718032
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where id =666666"
count
-------
准备好yum源,命令:yum install
yum install postgresql94-server postgresql94-contrib
设置开机启动,并启动服务
systemctl enable postgresql-9.4.service
初始化数据库/usr/pgsql-9.4/bin/postgresql94-setup initdb 然后,
启动数据库:systemctl start postgresql-9.4.service
查看进程是否正常启动,开启远程访问
修改用户密码,用命令su到用户上,如下图
将postgresq加入防火墙,新建文件/usr/lib/firewalld/services/postgresql.xml如下图操作:
重启服务systemctl restart postgresql-9.4.service,进行基本的数据库操作,就是使用一般的SQL语言
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流