ArcGIS 10.2 Query Layer pada kinerja SQL Server

10

Saya menggunakan Query Layer pada SQL Server di ArcMap. Query Layer dieksekusi secara instan di dalam SQL Server tetapi tetapi membutuhkan waktu begitu lama untuk menggambar di ArcMap sehingga sistem tampak tidak responsif selama sekitar 10 menit atau lebih lama. Selama menggambar ArcMap salah satu CPU sudah maksimal pada proses SQL Server.

My Query adalah STIntersects dari buffer pada fitur garis (Shannon) terhadap kelas fitur poligon (Townlands), sebagai berikut;

SELECT TOWNLANDS.TL_ID,TOWNLANDS.Shape FROM dbo.TOWNLANDS as townlands
with(index(FDO_Shape)) 
JOIN dbo.Shannon on townlands.Shape.STIntersects 
(Shannon.Shape.STBuffer(2.0))=1

Permintaan mengembalikan 186 baris secara instan. Ini bisa menggambar di panel Spasial SQL Server Management Studio tanpa masalah

Ketika saya membangun Query Layer di ArcMap dengan sintaks yang persis sama, sistem menjadi tidak responsif tetapi akhirnya menggambar. Tampaknya, mungkin, ArcMap tidak menggunakan indeks spasial atau melakukan hal itu berbeda dari SQL Server yang menyebabkan permintaan yang tidak efisien pada SQL Server yang membutuhkan waktu lama untuk kembali.

Adakah yang bisa memberi saran tentang pengobatan?

Terima kasih

ArcGIS Desktop: 10.2
ArcSDE: 10.2
RDBMS: Database and version: SQL Server 2008
OS: Windows Server 
Eamonn Doyle
sumber

Jawaban:

3

Seperti yang Anda nyatakan, kueri Anda tampaknya dijalankan dengan cepat di tingkat basis data. Bahkan jika Anda dapat membuat SQL lebih efisien, kinerja sebenarnya adalah pada level spasial.

Pernyataan SQL spasial, seperti yang Anda gunakan, diizinkan hanya baru-baru ini dengan pengenalan tipe geometri. SQL Server 2008 untuk ArcSDE mendukung tiga tipe data geometri, SDEBINARY, GEOMETRY dan GEOGRAPHY. Perbedaannya tercantum di sini

Untuk kinerja terbaik, pastikan Anda menggunakan Geometri atau Geografi (bukan SDEBINARY karena sudah usang dan tidak disarankan) berdasarkan sifat data Anda apakah Anda menggunakan referensi spasial bumi atau tidak. Pastikan juga untuk membuat kembali indeks spasial pada TOWNLANDS Featureeclass. Anda dapat melakukannya dari ArcCatalog dengan mengklik kanan padalass FeatureClass, properti dan pilih tab indeks.

Semoga itu bisa membantu.

hnasr
sumber
1

Saya tidak melihat dalam permintaan Anda perlunya bergabung. Coba gunakan WHERE.

SELECT TOWNLANDS.TL_ID,TOWNLANDS.Shape 
FROM dbo.TOWNLANDS as townlands
with(index(FDO_Shape)) 
WHERE townlands.Shape.STIntersects 
(Shannon.Shape.STBuffer(2.0))=1

Dalam kueri asli, gabungan tersebut tampaknya tidak bermanfaat bagi hasilnya; Saya tidak melihat kolom dari tabel Shannon di baris pilih. Karena itu, sepertinya ini pekerjaan ekstra.

Jimmyjak
sumber
Selamat datang di GIS SE! Jawaban Anda sangat singkat sehingga untuk membantu Penanya ini dan pembaca yang akan datang dapatkah Anda menggunakan tombol edit untuk memperluas apa yang Anda sarankan, tolong?
PolyGeo
1

Ini adalah batasan yang diketahui untuk menggunakan ArcGIS dengan SQL Server yang tidak memiliki perbaikan sederhana sejauh yang saya ketahui.

Jika perencana kueri SQL Server memutuskan perlu lebih dari satu CPU untuk menjalankan kueri, kemungkinan indeks spasial yang digunakan rendah.

Microsoft mengetahui masalah ini tetapi tidak terburu-buru untuk meningkatkan perencana kueri karena itu akan memengaruhi semua kueri, bukan hanya yang spasial.

Satu-satunya solusi yang dapat diandalkan adalah mengatur derajat paralelisme maksimum (MAXDOP) pada database Anda menjadi 1, tetapi ini berarti semua pertanyaan pada DB itu hanya akan menggunakan 1 CPU per permintaan, memperlambat semuanya.

Membuat tampilan yang mewakili tabel dan memaksa petunjuk indeks spasial tidak berfungsi karena ArcGIS perlu menanyakan metadata dan statistik tabel dan pandangan seperti itu membunuh pertanyaan itu.

minus34
sumber
0

Saya punya masalah serupa. Saya memiliki kelas fitur yang disimpan dalam SQL Server sebagai tipe Geometri. Ada 30 juta catatan di dalamnya & hasilnya menarik, tetapi jika Anda membuat TANDA yang ditautkan ke tabel ke-2, TANDA ini hang dan tidak akan ditampilkan.

Tabel ini memiliki banyak kelas hubungan yang menyertainya. Apakah ini mempengaruhi kinerja permintaan / gambar?

Anda juga dapat mengarahkan saya ke arah pengakuan Microsoft atas masalah ini. Bisakah saya memaksa perencana Query untuk menggunakan indeks spasial?

Tagihan

Bill Honey
sumber
Tolong tanyakan pertanyaan baru.
Mapperz