yum install postgis25_10*
http://download.openstreetmap.fr/extracts/asia/china/
createdb osm
psql -d osm -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'
osm2pgsql -c -d osm --slim -C 40960 --flat-nodes /tmp/flat.files --number-processes 16 -U gis -W -H 127.0.0.1 -d gis china-latest.osm.pbf
osm2pgsql -c -d osm --slim -C 40960 -P 5128 --flat-nodes /tmp/flat.files --number-processes 16 -U gis -W -H 127.0.0.1 -d gis shandong-latest.osm.pbf
shp2pgsql -s 3857 -I -D water_polygons.shp ocean_all | psql -p 5128 -d gis -U gis
psql -p 5128 -U gis -W -d gis -a -f create_tables.sql
CREATE TABLE ocean AS
WITH bounds AS (
SELECT ST_SetSRID(ST_Extent(way)::geometry,3857) AS geom
FROM planet_osm_line
)
SELECT 1 AS id, ST_Intersection(b.geom, o.geom) AS geom
FROM bounds b, ocean_all o
WHERE ST_Intersects(b.geom, o.geom);
curl -v -u admin:geoserver -XPOST -d@layergroup.xml -H "Content-type: text/xml" http://127.0.0.1:8080/geoserver/rest/workspaces/china/layergroups
CREATE TABLE public.o_qx_address_info05(
address_name character varying(200) NOT NULL COLLATE pg_catalog."default",
address_detail character varying(200) NOT NULL COLLATE pg_catalog."default",
latitude numeric(20,15) NULL,
longitude numeric(20,15) NULL)
daoruwenjian
psql -p 5128 -U gis
postgres=# \copy o_qx_address_info05(address_name,address_detail,latitude,longitude) from 'addr.txt' delimiter '|' csv header encoding 'GBK';
运行结果:成功导入63条记录
COPY 63
postgres=#
http://download.openstreetmap.fr/extracts/asia/china/
选项 默认值 说明 是否优化 原因
max_connections 100 允许客户端连接的最大数目 否 因为在测试的过程中,100个连接已经足够
fsync on 强制把数据同步更新到磁盘 是 因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off
shared_buffers 24MB 决定有多少内存可以被PostgreSQL用于缓存数据(推荐内存的1/4) 是 在IO压力很大的情况下,提高该值可以减少IO
work_mem 1MB 使内部排序和一些复杂的查询都在这个buffer中完成 是 有助提高排序等操作的速度,并且减低IO
effective_cache_size 128MB 优化器假设一个查询可以用的最大内存,和shared_buffers无关(推荐内存的1/2) 是 设置稍大,优化器更倾向使用索引扫描而不是顺序扫描
maintenance_work_mem 16MB 这里定义的内存只是被VACUUM等耗费资源较多的命令调用时使用 是 把该值调大,能加快命令的执行
wal_buffer 768kB 日志缓存区的大小 是 可以降低IO,如果遇上比较多的并发短事务,应该和commit_delay一起用
checkpoint_segments 3 设置wal log的最大数量数(一个log的大小为16M) 是 默认的48M的缓存是一个严重的瓶颈,基本上都要设置为10以上
checkpoint_completion_target 0.5 表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成 是 能降低平均写入的开销
commit_delay 0 事务提交后,日志写到wal log上到wal_buffer写入到磁盘的时间间隔。需要配合commit_sibling 是 能够一次写入多个事务,减少IO,提高性能
commit_siblings 5 设置触发commit_delay的并发事务数,根据并发事务多少来配置 是 减少IO,提高性能
shared_preload_libraries
必须在启动postmaster进程时加载PG-Strom模块shared_preload_libraries。无法按需加载。因此,您必须添加以下配置。
shared_preload_libraries = '$libdir/pg_strom'
max_worker_processes
PG-Strom内部使用多个后台工作程序,因此默认配置(= 8)对于其他用途而言太小。因此,我们建议将变量扩展到一定范围。
max_worker_processes = 100
的shared_buffers
虽然它取决于工作负载,但初始配置shared_buffers对于PG-Strom尝试工作的数据大小来说太小,因此存储工作负载限制了整个性能,并且可能无法有效地工作GPU。
因此,我们建议将变量扩展到一定的余量。
shared_buffers = 10GB
请考虑将SSD-to-GPU直接SQL执行应用于处理大于系统物理RAM大小的处理。
work_mem
虽然它取决于工作负载,但初始配置work_mem太小,无法在分析查询上选择最佳查询执行计划。
一个典型的例子是,可以选择基于磁盘的合并排序,而不是内存中的快速排序。
因此,我们建议将变量扩展到一定的余量。
work_mem = 1GB
-- FOREIGN TABLE: public.o_qx_address_info05
-- DROP FOREIGN TABLE public.o_qx_address_info05;
CREATE FOREIGN TABLE public.o_qx_address_info05(
address_name character varying(200) NOT NULL COLLATE pg_catalog."default",
address_detail character varying(200) NOT NULL COLLATE pg_catalog."default",
latitude numeric(20,15) NULL,
longitude numeric(20,15) NULL
)
SERVER dzda02
OPTIONS (schema 'JLKH', table 'QX_ADDRESS_INFO05');
ALTER FOREIGN TABLE public.o_qx_address_info05
OWNER TO wppd;
CREATE TABLE xiaoqu_name
( index bigint,
address_name character varying(200) NOT NULL COLLATE pg_catalog."default",
address_detail character varying(200) NOT NULL COLLATE pg_catalog."default",
geom geometry(Point, 4326) );
TRUNCATE TABLE xiaoqu_name RESTART IDENTITY;
insert into public.xiaoqu_name
SELECT row_number()over(), address_name,
address_detail,ST_GeomFromText('point('||longitude ||' '||latitude ||')',4326) FROM o_qx_address_info05
LIMIT 100
CREATE INDEX "xiaoqu_name_idx" ON public.xiaoqu_name USING gist (geom);
REINDEX INDEX "xiaoqu_name_idx"