這篇文章主要講解了“PostgreSQL性能優(yōu)化舉例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“PostgreSQL性能優(yōu)化舉例分析”吧!
創(chuàng)新互聯(lián)成立于2013年,公司以成都網(wǎng)站建設(shè)、成都做網(wǎng)站、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶超過(guò)千家,涉及國(guó)內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過(guò)專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
在空間數(shù)據(jù)中,通常會(huì)有軌跡、點(diǎn)、面的數(shù)據(jù),假設(shè)有兩張表,一張為面的表,一張為點(diǎn)的表,使用包含 ST_xxxx(c.geom, p.geom) 來(lái)進(jìn)行JOIN(例如以面為單位,聚合統(tǒng)計(jì)點(diǎn)的數(shù)量)。
測(cè)試數(shù)據(jù):
Setup
First download some polygons and some points.
Admin 0 - Countries
Populated Places
Load the shapes into your database.
shp2pgsql -s 4326 -D -I ne_10m_admin_0_countries.shp countries | psql performance shp2pgsql -s 4326 -D -I ne_10m_populated_places.shp places | psql performance
包含大量POINT的空間對(duì)象
SELECT count(*) FROM countries WHERE ST_NPoints(geom) > (8192 / 16);
1、使用默認(rèn)的壓縮格式時(shí),這個(gè)空間JOIN查詢,耗時(shí)25秒。
SELECT count(*), c.name FROM countries c JOIN places p ON ST_Intersects(c.geom, p.geom) GROUP BY c.name;
使用PERF或oprofile跟蹤其耗時(shí)的代碼
發(fā)現(xiàn)問題是解壓縮的pglz_decompress 接口造成的。
2、將空間字段改成非壓縮格式,耗時(shí)降到4秒。
-- Change the storage type ALTER TABLE countries ALTER COLUMN geom SET STORAGE EXTERNAL; -- Force the column to rewrite UPDATE countries SET geom = ST_SetSRID(geom, 4326); vacuum full countries; -- Re-run the query SELECT count(*), c.name FROM countries c JOIN places p ON ST_Intersects(c.geom, p.geom) GROUP BY c.name;
感謝各位的閱讀,以上就是“PostgreSQL性能優(yōu)化舉例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)PostgreSQL性能優(yōu)化舉例分析這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!