ST_ অন্তর স্লো ক্যোয়ারী


11

আমি দুটি স্তরের মধ্যে ছেদ করার চেষ্টা করছি:

  1. পললাইন স্তরটি কয়েকটি রাস্তার প্রতিনিধিত্ব করে (~ 5500 সারি)
  2. বহুভিত্তিক স্তর আগ্রহের বিভিন্ন পয়েন্টের চারপাশে অনিয়মিত আকারের বাফারগুলিকে উপস্থাপন করে (~ 47,000 সারি)

শেষ পর্যন্ত, আমি যা করার চেষ্টা করছি তা হল এই অনেকগুলি (কখনও কখনও ওভারল্যাপিং) বাফারগুলিতে পলিইনগুলি ক্লিপ করা এবং তারপরে প্রতিটি বাফারের মধ্যে থাকা সড়কপথের মোট দৈর্ঘ্য যোগ করুন।

সমস্যাটি হচ্ছে বিষয়গুলি খুব কম চলছে। আমি নিশ্চিত যে এটি কতটা সময় নিতে হবে তবে আমি 34 ঘন্টা পরে আমার জিজ্ঞাসাটি বাতিল করে দিয়েছি। আমি আশা করছি যে কেউ আমার এসকিউএল ক্যোয়ারীর সাথে কোথায় ভুল করে ফেলেছে তা নির্দেশ করতে পারে বা এটি করার আরও ভাল পদ্ধতিতে আমাকে নির্দেশ করতে পারে।

CREATE TABLE clip_roads AS

SELECT 
  ST_Intersection(b.the_geom, z.the_geom) AS clip_geom,
  b.*

FROM 
  public."roads" b, 
  public."buffer1KM" z

WHERE ST_Intersects(b.the_geom, z.the_geom);


CREATE INDEX "clip_roads_clip_geom_gist"
  ON "clip_roads"
  USING gist
  (clip_geom);



CREATE TABLE buffer1km_join AS

SELECT
  z.name, z.the_geom,
  sum(ST_Length(b.clip_geom)) AS sum_length_m

FROM
  public."clip_roads" b,
  public."buffer1KM" z

WHERE
  ST_Contains(z.the_geom, b.the_geom)

GROUP BY z.name, z.the_geom;

মূল রাস্তার টেবিলের জন্য আমার কাছে একটি জিআইএসটি সূচক তৈরি করা আছে এবং দ্বিতীয় সারণী তৈরি করার আগে একটি সূচক তৈরি করব (কেবল নিরাপদ থাকতে?)

পিজিএডমিন তৃতীয়ের ক্যোয়ারী প্ল্যানটি এমন দেখাচ্ছে, যদিও আমি ভয় করি যে এটির ব্যাখ্যা দেওয়ার মতো দক্ষতা আমার নেই:

"Nested Loop  (cost=0.00..29169.98 rows=35129 width=49364)"
"  Output: st_intersection(b.the_geom, z.the_geom), b.gid, b.geo_id, b.address_l, b.address_r, b.lf_name, b.lfn_id, b.lfn_name, b.lfn_type_c, b.lfn_type_d, b.lfn_dir_co, b.lfn_dir_de, b.lfn_desc, b.oe_flag_l, b.oe_flag_r, b.fcode_desc, b.fcode, b.fnode, b.tnode, b.metrd_num, b.lo_num_l, b.lo_n_suf_l, b.hi_num_l, b.hi_n_suf_l, b.lo_num_r, b.lo_n_suf_r, b.hi_num_r, b.hi_n_suf_r, b.juris_code, b.dir_code, b.dir_code_d, b.cp_type, b.length, b.the_geom"
"  Join Filter: _st_intersects(b.the_geom, z.the_geom)"
"  ->  Seq Scan on public."roads" b  (cost=0.00..306.72 rows=5472 width=918)"
"        Output: b.gid, b.geo_id, b.address_l, b.address_r, b.lf_name, b.lfn_id, b.lfn_name, b.lfn_type_c, b.lfn_type_d, b.lfn_dir_co, b.lfn_dir_de, b.lfn_desc, b.oe_flag_l, b.oe_flag_r, b.fcode_desc, b.fcode, b.fnode, b.tnode, b.metrd_num, b.lo_num_l, b.lo_n_suf_l, b.hi_num_l, b.hi_n_suf_l, b.lo_num_r, b.lo_n_suf_r, b.hi_num_r, b.hi_n_suf_r, b.juris_code, b.dir_code, b.dir_code_d, b.cp_type, b.length, b.the_geom"
"  ->  Index Scan using "buffer1KM_index_the_geom" on public."buffer1KM" z  (cost=0.00..3.41 rows=1 width=48446)"
"        Output: z.gid, z.objectid, z.facilityid, z.name, z.frombreak, z.tobreak, z.postal_cod, z.pc_area, z.ct_id, z.da_id, z.taz_id, z.edge_poly, z.cchs_0708, z.tts_06, z.the_geom"
"        Index Cond: (b.the_geom && z.the_geom)"

এই অপারেশনটি কি বেশ কয়েকদিন ধরে ছড়িয়ে ছিটিয়ে রয়েছে? আমি বর্তমানে এটি উইন্ডোজের জন্য পোস্টজিআইএস-এ চালাচ্ছি, তবে আমি তাত্ত্বিকভাবে এটি অ্যামাজন ইসি 2 এ রেখে সমস্যার আরও হার্ডওয়্যার ফেলে দিতে পারি। তবে, আমি দেখতে পাচ্ছি যে ক্যোয়ারী একবারে কেবল একটি কোর ব্যবহার করছে (এটি আরও ব্যবহার করার উপায় আছে কি?)


পোস্টগিস কী চলছে? ওএস এবং প্রসেসর একটি কারণ হতে পারে।
ম্যাপারজ

হাই ম্যাপেরজ: ওএস হ'ল উইন্ডোজ,, সিপিইউ হল কোর ২ ডুও, মেমোরিটি 4 জিবি (উইন্ডোজ হচ্ছে, 32-বিট পিজিএসকিউএল / পোস্টজিআইএস চলছে)
পিটার

উত্তর:


6

পিটার,

আপনি পোস্টজিআইএস, জিইওএস এবং পোস্টগ্রিএসকিউএল এর কোন সংস্করণ ব্যবহার করছেন?
একটি কর

পোস্টগিজ_ফুল_ভারশন (), সংস্করণ () নির্বাচন করুন;

এই ধরণের জিনিসটির জন্য 1.4 থেকে 1.5 এবং GEOS 3.2+ এর মধ্যে প্রচুর বর্ধন করা হয়েছে।

এছাড়াও আপনার বহুভুজের কতটি অনুচ্ছেদ রয়েছে?

সর্বাধিক নির্বাচন করুন (ST_NPPoint (the_geom)) সর্বাধিক কিছু থেকে FROM;

আপনার নিকৃষ্টতম পরিস্থিতিটির অনুভূতি পেতে। এর মতো ধীর গতি প্রায়শই জ্যামিতির কারণে ঘটে যা খুব শেষ পর্যন্ত দানা বাঁধে। কোন ক্ষেত্রে আপনি প্রথমে সরল করতে চাইতে পারেন।

এছাড়াও আপনি কি আপনার পোস্টগ্রিস্কএল.কম ফাইলটিতে অপ্টিমাইজেশন করেছেন?


হাই এলআর 1234567: "পোস্টজিআইএস =" 1.5.2 "জিইওএস =" 3.2.2-সিপিআই-1.6.2 "PROJ =" Rel। 4.6.1, 21 আগস্ট 2008 "LIBXML =" 2.7.6 "USE_STATS"; "পোস্টগ্র্রেএসকিউএল 9.0.3, ভিজ্যুয়াল সি ++ বিল্ড 1500 দ্বারা সংকলিত, 32-বিট" (এখন অন্য কোয়েরি চালাচ্ছে)
পিটার

সর্বাধিক ক্যোয়ারী আমার প্রত্যাশার চেয়ে দ্রুত গতিতে চলেছিল: সর্বোচ্চ = 2030 আমার সন্দেহ হয় যে এটি বেশ জরিমানা?
পিটার

1
2,030 আসলে খারাপ নয় isn't এটি হতে পারে যে আপনার কাছে বহু বহুভুজ রয়েছে যা ছেদ করে। সাধারণত ছেদটি সেই অংশটি যা সবচেয়ে ধীর হয় .. কতগুলি রেকর্ড আসলে ছেদ করে তা গণনা করার চেষ্টা করুন - এটি বিশাল হতে পারে।
LR1234567

নির্বাচন গণনা (*) জনসাধারণের কাছ থেকে "" রাস্তাগুলি "বি, পাবলিক"
LR1234567

1
910,978 কি বিশাল? একটি নতুন প্রযুক্তি শুরু করার বিষয়ে এটি দুর্দান্ত জিনিস - আমার কোনও আদর্শিক প্রত্যাশা নেই :-)
পিটার

1

সহায়ক স্ট্যাক-এক্সচেঞ্জ উত্তর: /programming/1162206/why-is-postgresql-so-slow-on-windows

টিউনিং পোস্টগ্র্যাগগুলি: http://wiki.postgresql.org/wiki/Performance_Optimization

অভিজ্ঞতা থেকে ভ্যাকুয়াম বিশ্লেষণের পরামর্শ দিন


আপনাকে ধন্যবাদ, এটি ভাল পরামর্শ মত মনে হচ্ছে। কিছু উইন্ডোজ ইস্যু যেমন কাঁটাচামচ () জরিমানা এখানে সমস্যা হওয়া উচিত নয় কারণ আমি একক সংযোগ চালাচ্ছি, তাই না? এছাড়াও, ভ্যাকুয়াম বিশ্লেষণ চালানো হয়েছে। যদিও আমি এখনও কোনও পারফরম্যান্স অপটিমাইজেশন খনন করি নি।
পিটার

1
ভাগ করা_বাফার এবং ওয়ার্ক_মেম সাধারণত সবচেয়ে বেশি পার্থক্য করে। ভাগ করা_বাফারদের জন্য আপনি লিনাক্সের চেয়ে উইন্ডোতে যে কতটা আপ করতে পারেন তা আপনি আরও সীমাবদ্ধ
LR1234567

ভাগ করা_বাফারগুলি ইতিমধ্যে চালু ছিল, কিন্তু কাজের_মেম বন্ধ ছিল। আমি এখন 1 গিগাবাইট ওয়ার্ক মেম যুক্ত করেছি।
পিটার

1

নির্লজ্জ প্লাগ :) আমাদের বইয়ের অধ্যায় 8 এবং অধ্যায় 9 পড়তে সাহায্য করতে পারে। ঠিক প্রেসগুলি বন্ধ গরম। আমরা এই অধ্যায়ে এই ধরণের অনেক প্রশ্ন coverেকে রাখি।

http://www.postgis.us/chapter_08

http://www.postgis.us/chapter_09


লিঙ্কগুলি নষ্ট হয়ে গেছে, এটি কি পোস্টজিআইএস ইন অ্যাকশন বা পোস্টজিআইএস কুকবুকের কথা উল্লেখ করছে?
হাইক্কি ওয়েসেন্টো

1
আহ আপনি ঠিক বলেছেন। সেগুলি পোস্টজিআইএস-এর প্রথম সংস্করণের লিঙ্ক ছিল - যা তখনকার সময়ে বৈধ ছিল। যখন আমরা ২ য় সংস্করণ চালু করি তখন আমাদের লিঙ্কের কাঠামোটি পরিবর্তন করতে হয়েছিল। পুরানো লিঙ্কগুলি এখানে উল্লেখ করা হয়েছে: postgis.us/chapters_edition_1
LR1234567

0

স্থানিক ক্যোয়ারী অনুকূলিত করতে দুটি টিপস দেখুন। তারা আমার খুব ভাল কাজ। http://kb.zillionics.com/optimize-spatial-query/


2
এই উত্তরটি আরও কিছু বিশদ সহ আরও ভাল হবে যেমন এই নির্দিষ্ট দৃশ্যে কীভাবে সেগুলি প্রয়োগ করা যায়।
ব্র্যাডহার্ডস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.