? # yum install
公司主營業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出辛集免費(fèi)做網(wǎng)站回饋大家。
? ? # 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端初始化設(shè)定及添加Agent啦
現(xiàn)在就動(dòng)手----阿里云ECS
了存儲(chǔ)、查詢和修改空間關(guān)系的能力。本文中 ‘PostgreSQL’ 指代基本的關(guān)系數(shù)據(jù)庫功能,而 ‘PostGIS’ 指代擴(kuò)展的空間操作特性。
客戶端-服務(wù)器構(gòu)架
PostgreSQL 同眾多數(shù)據(jù)庫產(chǎn)品一樣,采用客戶端-服務(wù)器構(gòu)架??蛻舳讼蚍?wù)器發(fā)出請求并得到響應(yīng)。這種機(jī)制同瀏覽器從網(wǎng)絡(luò)服務(wù)器獲取網(wǎng)頁類似。在 PostgreSQL 中,請求以 SQL 語言發(fā)出,而響應(yīng)多為從數(shù)據(jù)庫提取的表單。
客戶端與服務(wù)器可以部署在同一臺(tái)設(shè)備上,即 PostgreSQL 可以在單一的計(jì)算機(jī)上使用。借由系統(tǒng)內(nèi)部的 ‘loopback’ 通信機(jī)制,數(shù)據(jù)庫系統(tǒng)可以進(jìn)行私密通訊。除非專門配置,外界是不能訪問這些信息的。
本位介紹三種客戶端:命令行, Quantum GIS , pgAdmin 圖形化數(shù)據(jù)庫客戶端。
創(chuàng)造具有空間信息處理能力的數(shù)據(jù)庫
命令行客戶端在終端模擬器(Terminal Emulator)中運(yùn)行。在 Applications 菜單的 Accessories 中打開一個(gè)終端模擬器,將顯示一個(gè) Unix 風(fēng)格的命令行界面。輸入:
psql -V
回車確認(rèn),將顯示 PostgreSQL 版本號(hào)。
一個(gè) PostgreSQL 服務(wù)器中,可以將不同的任務(wù)組織到不同的數(shù)據(jù)庫。每個(gè)數(shù)據(jù)庫獨(dú)立運(yùn)作,擁有專門的表單、顯示、用戶等。訪問 PostgreSQL 數(shù)據(jù)庫時(shí)將指定一個(gè)數(shù)據(jù)庫。
服務(wù)器上數(shù)據(jù)庫列表通過以下命令查詢:
psql -l
輸出將羅列 Live 上配置的幾個(gè)數(shù)據(jù)庫。這里演示新建一個(gè)。
PostgreSQL 使用 createdb 工具創(chuàng)建數(shù)據(jù)庫。這里建立的數(shù)據(jù)庫應(yīng)帶有 PostGIS 的擴(kuò)展功能,因此需要指定相應(yīng)的模板。這里將新建數(shù)據(jù)庫稱為 demo 。命令為:
createdb-Ttemplate_postgisdemo
現(xiàn)在執(zhí)行 psql-l 應(yīng)當(dāng)可以看到 demo 數(shù)據(jù)庫。
也可以使用 SQL 語言創(chuàng)建 PostGIS 數(shù)據(jù)庫。首先使用 dropdb 命令刪除之前創(chuàng)建的數(shù)據(jù)庫,然后使用 psql 命令開啟 SQL 命令解析器:
dropdbdemopsql-dpostgres
這樣就連接到了一個(gè)通用的系統(tǒng)數(shù)據(jù)庫 postgres 。輸入 SQL 命令建立新數(shù)據(jù)庫:
postgres=# CREATE DATABASE demo TEMPLATE=template_postgis;
現(xiàn)在可以轉(zhuǎn)換連接到新建的數(shù)據(jù)庫。若重新連接時(shí)可以使用 psql-ddemo 命令。但在 psql 系統(tǒng)內(nèi)部也可以使用以下命令:
postgres=# \c demo
一個(gè)信息頁面將顯示當(dāng)前已連接 demo 數(shù)據(jù)庫。輸入 \dt 列出當(dāng)前數(shù)據(jù)庫內(nèi)的表單,輸出如下:
demo=# \dtListofrelationsSchema|Name|Type|Owner--------+------------------+-------+-------public|geometry_columns|table|userpublic|spatial_ref_sys|table|user(2rows)
這兩個(gè)表格是 PostGIS 默認(rèn)的。其中 spatial_ref_sys 存儲(chǔ)著合法的空間坐標(biāo)系統(tǒng)。利用 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)
以上顯示確認(rèn)了該數(shù)據(jù)庫已經(jīng)建立空間操作功能。數(shù)據(jù)庫中的 geometry_columns 用于記錄那些表格是有空間信息的。
手工建立空間數(shù)據(jù)表格
空間數(shù)據(jù)庫已經(jīng)建立,現(xiàn)在可以建立具有空間信息的表格。
首先建立一個(gè)常規(guī)的表格存儲(chǔ)有關(guān)城市(cities)的信息。這個(gè)表格有兩欄,一個(gè)是 ID 編號(hào),一個(gè)是城市名:
demo=# CREATE TABLE cities ( id int4, name varchar(50) );
現(xiàn)在添加一個(gè)空間欄用于存儲(chǔ)城市的位置。習(xí)慣上這個(gè)欄目叫做 the_geom 。它記錄了數(shù)據(jù)為什么類型(點(diǎn)、線、面)、有幾維(這里是二維)以及空間坐標(biāo)系統(tǒng)。此處使用 EPSG:4326 坐標(biāo)系統(tǒng):
demo=# SELECT AddGeometryColumn ('cities', 'the_geom', 4326, 'POINT', 2);
完成后,查詢 cities 表單應(yīng)當(dāng)顯示這個(gè)新欄目。同時(shí)頁面將顯示當(dāng)前表達(dá)沒有記錄(0 rows)。
demo=# SELECT * from cities;id|name|the_geom----+------+----------(0rows)
為添加記錄,需要使用 SQL 命令。對(duì)于空間欄,使用 PostGIS 的 ST_GeomFromText 可以將文本轉(zhuǎn)化為坐標(biāo)與參考系號(hào)的記錄:
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');
當(dāng)然,這樣的輸入方式難以操作。其它方式可以更快的輸入數(shù)據(jù)。就目前來說,表格內(nèi)已經(jīng)有了一些城市數(shù)據(jù),可以先進(jìn)行查詢等操作。
簡單查詢
標(biāo)準(zhǔn)的 SQL 操作都可以用于 PostGIS 表單:
demo=# SELECT * FROM cities;id|name|the_geom----+-----------------+----------------------------------------------------1|London,England|0101000020E6100000BBB88D06F016C0BF1B2FDD2406C149402|London,Ontario|0101000020E6100000F4FDD478E94E54C0E7FBA9F1D27D45403|EastLondon,SA|0101000020E610000040AB064060E93B4059FAD005F58140C0(3rows)
這里的坐標(biāo)是無法閱讀的 16 進(jìn)制格式。要以 WKT 文本顯示,使用 ST_AsText(the_geom) 或 ST_AsEwkt(the_geom) 函數(shù)。也可以使用 ST_X(the_geom) 和 ST_Y(the_geom) 顯示一個(gè)維度的坐標(biāo):
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 擴(kuò)展了許多空間操作功能。以上已經(jīng)涉及了轉(zhuǎn)換空間坐標(biāo)格式的 ST_GeomFromText 。多數(shù)空間操作以 ST(spatial type)開頭,在 PostGIS 文檔相應(yīng)章節(jié)有羅列。這里回答一個(gè)具體的問題:以米為單位并假設(shè)地球是完美橢球,上面三個(gè)城市相互的距離是多少?
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)
輸出顯示了距離數(shù)據(jù)。注意 ‘WHERE’ 部分防止了輸出城市到自身的距離(0)或者兩個(gè)城市不同排列的距離數(shù)據(jù)(London, England 到 London, Ontario 和 London, Ontario 到 London, England 的距離是一樣的)。嘗試取消 ‘WHERE’ 并查看結(jié)果。
這里采取不同的橢球參數(shù)(橢球體名、半主軸長、扁率)計(jì)算:
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 數(shù)據(jù)制圖需要相應(yīng)的客戶端支持。包括 Quantum GIS、gvSIG、uDig 在內(nèi)的多種客戶端均可以。以下使用 Quantum GIS:
從 Desktop GIS 菜單啟動(dòng) Quantum GIS 并在其 layer 菜單選擇 AddPostGISlayers 。連接到 Natural Earth PostGIS 數(shù)據(jù)庫的參數(shù)在 Connections 下拉菜單中有。這里可以定義和儲(chǔ)存其它的配置。點(diǎn)擊 Edit 可以查看具體參數(shù)。點(diǎn)擊 Connect 連接:
?
系統(tǒng)將顯示所有空間信息表供選擇:
?
選擇 lakes 湖泊表單并點(diǎn)擊底部的 Add 添加。頂部的 Load 可以載入新的數(shù)據(jù)庫連接配置。數(shù)據(jù)將被導(dǎo)入:
?
界面上顯示出湖泊的分布。QGIS 并不理解湖泊一詞的含義,也許不會(huì)自動(dòng)使用藍(lán)色。請查看其手冊了解如何設(shè)置。這里縮放到加拿大一處著名的湖泊群。
自動(dòng)創(chuàng)建空間數(shù)據(jù)表單
OSGeo Live 的多數(shù)桌面 GIS 系統(tǒng)都可以將 shp 等文件導(dǎo)入數(shù)據(jù)庫。這里依然使用 QGIS 演示。
QGIS 中導(dǎo)入 shp 可以使用 PostGIS Manager 插件。在 Plugins 菜單選擇 FetchPlugins 導(dǎo)入最新的官方插件列表(需要網(wǎng)絡(luò)連接)。找到 PostGISManager 點(diǎn)擊 Installplugin 安裝。
?
完成后,在 Plugin 菜單點(diǎn)擊 PostGIS Manager 啟動(dòng)。也可以點(diǎn)擊工具欄上大象與地球的圖標(biāo)。
該插件將連接 Natural Earth 數(shù)據(jù)庫。若提示輸入密碼,留空即可。在開啟的界面中,選擇表單可以顯示相應(yīng)的信息。預(yù)覽(Preview)選項(xiàng)卡可以顯示地圖預(yù)覽。這里選擇了 populated places 圖層并縮放到一個(gè)小島:
?
接下來使用 PostGIS Manager 將 shp 導(dǎo)入數(shù)據(jù)庫。這里使用 R 統(tǒng)計(jì)擴(kuò)展包含的 North Carolina sudden infant death syndrome (SIDS) 數(shù)據(jù):
在 Data 菜單選擇 Loaddatafromshapefile 選項(xiàng)。點(diǎn)擊 ... 選中 R maptools 中的 sids.shp 。
常用數(shù)據(jù)庫軟件:IBM 的DB2:第一個(gè)具備網(wǎng)上功能的多媒體關(guān)系數(shù)據(jù)庫管理系統(tǒng),支持包括Linux在內(nèi)的一系列平臺(tái)。甲骨文公司的Oracle:支持最廣泛的操作系統(tǒng)平臺(tái)。Informix的Informix Sybase公司的SybasePostgreSQLSun公司的mySQL:體積小、速度快、總體擁有成本低,開放源碼,被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。Microsoft的SQL Server、Access數(shù)據(jù)庫、FoxPro數(shù)據(jù)庫 一、SQL Server 的發(fā)展歷史
由關(guān)系數(shù)據(jù)庫 Sybase演變而來。
1988年,由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)OS/2版本。
94年后,Sybase公司致力于開發(fā)UNIX系統(tǒng)下的數(shù)據(jù)庫系統(tǒng);Microsoft公司繼續(xù)開發(fā)基于WindowsNT的SQL Server系列數(shù)據(jù)庫系統(tǒng)
96年,SQL Server 6.5版本;98年,SQL Server 7.0版本;2000年,正式發(fā)行SQL Server 2000版本。
二、SQL Server 2000特點(diǎn)
1.真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)。
2.圖形化用戶界面,使系統(tǒng)管理和數(shù)據(jù)庫管理更加直觀、簡單。
3.豐富的編程接口工具,為用戶進(jìn)行程序設(shè)計(jì)提供了更大的選擇余地。
4.與Windows NT完全集成,利用了NT的許多功能(如發(fā)送和接受消息,管理登錄安全性等)。并很好地與Microsoft BackOffice產(chǎn)品集成。
5.具有很好的伸縮性。(可跨越從運(yùn)行Windows 95/98的膝上型電腦到運(yùn)行Windows 2000的大型多處理器等多種平臺(tái)使用)
6.對(duì)Web技術(shù)的支持。使用戶能夠很容易地將數(shù)據(jù)庫中的數(shù)據(jù)發(fā)布到Web頁面上。
7.提供數(shù)據(jù)倉庫功能。(原來只在Oracle和其他更昂貴的DBMS中才有)
我在阿里云服務(wù)器(Windows Server 2008)上安裝PostgreSQL也遇到這種情況,這是在創(chuàng)建數(shù)據(jù)庫時(shí)發(fā)生的異常。參考了很多做法,后來這樣解決的,可以照此試試看。2) 使用新登錄賬號(hào)andy登錄,并創(chuàng)建好安裝目錄c:\postgreSQL,然后對(duì)該目錄授予users組的全部控制權(quán)限;就這樣安裝成功了。與之前安裝的不同之處在于:1) 沒有使用Administrator賬號(hào)來執(zhí)行安裝; 2) 安裝主目錄事先就創(chuàng)建好了,并授予users的全部權(quán)限出現(xiàn)了只有的情況應(yīng)該是手機(jī)中毒了,你可以用騰訊手機(jī)管家殺毒。用騰訊手機(jī)管家殺毒的步驟是:到官網(wǎng)下載安裝最新版本的騰訊手機(jī)管家,安裝后更新病毒庫-再在手機(jī)桌面點(diǎn)擊“騰訊手機(jī)管家”-選擇“病毒查殺”-選擇“快速掃描”(或者“全盤掃描”)即可對(duì)手機(jī)進(jìn)行徹底殺毒??床惶澹隳莻€(gè)可能是系統(tǒng)補(bǔ)丁文件,如果是的話,可以刪除,系統(tǒng)不定期更新,只要更新就有新的下載,你桌面就多幾個(gè),呵呵,正常在C盤的系統(tǒng)文件夾里,你有360衛(wèi)士,里面有設(shè)置位置或清除的,可以搞定這個(gè),把下載補(bǔ)丁的位置改一下,具體你自己找下吧,我現(xiàn)在機(jī)器里沒360衛(wèi)士。應(yīng)該說明白了吧?;蛘呤鞘裁窜浖臄?shù)據(jù)包?.TMP文件是系統(tǒng)臨時(shí)文件,比如你打開網(wǎng)頁什么的都隨時(shí)產(chǎn)生,歷史記錄及時(shí)清,360瀏覽器有個(gè)網(wǎng)頁關(guān)閉就即時(shí)清理。位置也是可以設(shè)置的??傊畡e放桌面。360衛(wèi)士清理臨時(shí)文件,更改存放位置,可以解決問題。這個(gè)能找到不,選移動(dòng)文件夾,搞定親,打開瀏覽器,菜單欄,點(diǎn)工具,點(diǎn)internet選項(xiàng),就是上面的圖片,然后點(diǎn)瀏覽歷史記錄里面的設(shè)置,出現(xiàn)下面的窗口,點(diǎn)移動(dòng)文件夾順便點(diǎn)個(gè)贊,你行的要離開會(huì),再有問題等下午了不是這個(gè)臨時(shí)文件,這個(gè)是正常的,我不管打開什么東西,都有這些垃圾,不光360瀏覽器,我想徹底根治,沒有別的辦法了嗎。殺過了,你把你QQ給我,我加下你。關(guān)掉影音軟件。進(jìn)入游戲后,點(diǎn)擊設(shè)置,設(shè)置成無邊框,分辨率要跟桌面的分辨率一致。在英雄聯(lián)盟官網(wǎng)上,下載手動(dòng)安裝包并安裝,重啟游戲即可。1.注消或重啟電腦,然后再試著刪除。2.進(jìn)入“安全模式刪除”。3.在純DOS命令行下使用DEL,DELTREE和RD命令將其刪除。4.如果是文件夾中有比較多的子目錄或文件而導(dǎo)致無法刪除,可先刪除該文件夾中的子目錄和文件,再刪除文件夾。5.在任務(wù)管理器中結(jié)束Explorer.exe進(jìn)程,然后在命令提示符窗口刪除文件。6.如果你有安裝ACDSee,F(xiàn)lashFXP,Nero,Total這幾個(gè)軟件,可以嘗試在這幾個(gè)軟件中刪除文件夾。運(yùn)行磁盤掃描,并掃描文件所在分區(qū),掃描前確定已選上修復(fù)文件和壞扇區(qū),全面掃描所有選項(xiàng),掃描后再刪除文件。某些媒體播放中斷或正在預(yù)覽時(shí)會(huì)造成無法刪除。在“運(yùn)行”框中輸入:REGSVR32 /U SHMEDIA.DLL,注銷掉預(yù)讀功能?;騽h除注冊表中下面這個(gè)鍵值:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489-5FE6850DC73E}\InProcServer32]。由于反病毒軟件在查毒時(shí)會(huì)占用正在檢查的文件,從而導(dǎo)致執(zhí)行刪除時(shí)提示文件正在使用,這時(shí)可試著暫時(shí)關(guān)閉它的即時(shí)監(jiān)控程序,或許可以解決。OFFice的非法關(guān)閉也會(huì)造成文件無法刪除或改名。重新運(yùn)行該程序,然后正常關(guān)閉,再刪除文件。右擊要?jiǎng)h除的文件夾,選擇“添加到壓縮文件”。在彈出的對(duì)話框中選中“壓縮后刪除源文件,”隨便寫個(gè)壓縮包名,點(diǎn)確定。如果是2000和xp系統(tǒng),請先確定是否有權(quán)限刪除這個(gè)文件或文件夾。如果可執(zhí)行文件的映像或程序所調(diào)用的DLL動(dòng)態(tài)鏈接庫文件還在內(nèi)存中未釋放,刪除時(shí)就會(huì)提示文件正在使用,解決方法是刪除系統(tǒng)的頁面文件,Win98中是Win386.SWP,Win2000/XP是pagefile.sys。注意要在DOS下刪除。使用文件粉碎機(jī),如File Pulverizer,可以徹底刪除一些頑固文件。文件夾無法刪除,未必就是不好的事情,如果把一些重要的文件放在這個(gè)目錄中,不就可以避免誤刪了嗎?一個(gè)文件名只包含空格的文件夾在Windows中是不允許創(chuàng)建和刪除的,但在DOS下卻可以創(chuàng)建文件名包含\的文件夾。
1. 概述
cstore_fdw實(shí)現(xiàn)了 PostgreSQL 數(shù)據(jù)庫的列式存儲(chǔ)。列存儲(chǔ)非常適合用于數(shù)據(jù)分析的場景,數(shù)據(jù)分析的場景下數(shù)據(jù)是批量加載的。
這個(gè)擴(kuò)展使用了Optimized Row Columnar (ORC)數(shù)據(jù)存儲(chǔ)格式,ORC改進(jìn)了Facebook的RCFile格式,帶來如下好處:
壓縮:將內(nèi)存和磁盤中數(shù)據(jù)大小削減到2到4倍??梢詳U(kuò)展以支持不同壓縮算法。
列投影:只提取和查詢相關(guān)的列數(shù)據(jù)。提升IO敏感查詢的性能。
跳過索引:為行組存儲(chǔ)最大最小統(tǒng)計(jì)值,并利用它們跳過無關(guān)的行。
2. 使用
cstore_fdw的安裝和使用都非常簡單,可以參考官方資料。
thub.com/citusdata/cstore_fdw
注)注意cstore_fdw只支持PostgreSQL9.3和9.4 。
下面做幾個(gè)簡單的性能對(duì)比,看看cstore_fdw究竟能帶來多大的性能提升。
2.1 數(shù)據(jù)加載
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
);
注:要和普通表的全表掃描作對(duì)比,所以不建主鍵和索引。
[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千萬條記錄,數(shù)據(jù)占用存儲(chǔ)大小1.16G,插入耗時(shí)6分42秒,分析耗時(shí)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千萬條記錄,數(shù)據(jù)占用存儲(chǔ)大小390M,插入耗時(shí)7分35秒,分析耗時(shí)6秒。
使用cstore列存儲(chǔ)后,數(shù)據(jù)占用存儲(chǔ)大小降到普通表的3分之1。需要說明的是,由于所有TEXT列填充了隨機(jī)數(shù)據(jù),壓縮率不算高,某些實(shí)際的應(yīng)用場景下壓縮效果會(huì)比這更好。
2.2 Text列的like查詢性能對(duì)比
2.2.1 普通表
清除文件系統(tǒng)緩存,并重啟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
對(duì)Text列執(zhí)行l(wèi)ike查詢
[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
耗時(shí)7.1秒,產(chǎn)生IO讀1.14G,IO寫108K。
不清文件系統(tǒng)緩存,不重啟PostgreSQL,再執(zhí)行一次。消耗時(shí)間降到1.6秒,幾乎不產(chǎn)生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表
清除文件系統(tǒng)緩存,并重啟PostgreSQL
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
對(duì)Text列執(zhí)行l(wèi)ike查詢
[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
耗時(shí)2.8秒,產(chǎn)生IO讀59M,IO寫0K。執(zhí)行時(shí)間優(yōu)化的雖然不是太多,但I(xiàn)O大大減少,可見列投影起到了作用。
不清文件系統(tǒng)緩存,不重啟PostgreSQL,再執(zhí)行一次。消耗時(shí)間降到1.4秒,幾乎不產(chǎn)生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 對(duì)Int列執(zhí)行=查詢
2.3.1 普通表
清除文件系統(tǒng)緩存,并重啟PostgreSQL后
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
對(duì)Int列執(zhí)行=查詢
[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
耗時(shí)6.8秒,產(chǎn)生IO讀1.14G,IO寫84K
不清緩存,再執(zhí)行一次。消耗時(shí)間降到1.1秒,幾乎不產(chǎn)生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
-------
準(zhǔn)備好yum源,命令:yum install
yum install postgresql94-server postgresql94-contrib
設(shè)置開機(jī)啟動(dòng),并啟動(dòng)服務(wù)
systemctl enable postgresql-9.4.service
初始化數(shù)據(jù)庫/usr/pgsql-9.4/bin/postgresql94-setup initdb 然后,
啟動(dòng)數(shù)據(jù)庫:systemctl start postgresql-9.4.service
查看進(jìn)程是否正常啟動(dòng),開啟遠(yuǎn)程訪問
修改用戶密碼,用命令su到用戶上,如下圖
將postgresq加入防火墻,新建文件/usr/lib/firewalld/services/postgresql.xml如下圖操作:
重啟服務(wù)systemctl restart postgresql-9.4.service,進(jìn)行基本的數(shù)據(jù)庫操作,就是使用一般的SQL語言