Saya melayani ubin vektor menggunakan TileStache , saya sudah mengatur semuanya seperti yang saya inginkan. Data saya disimpan di Postgres dan saya menggunakan penyedia VecTiles untuk melayani ubin GeoJSON .
Saya ingin membuat cache semua ubin saya untuk membuat ubin melayani lebih cepat. Saya menggunakan tilestache-seed.py untuk seed cache saya. Saya menjalankan tilestache-seed pada beberapa mesin. Benih Tilestache bekerja dengan sangat baik hingga tingkat zoom 13, tetapi setelah itu terlalu lama untuk men-cache ubin. Hanya untuk Tingkat Zoom 16 Saya memiliki cache 5023772, dan saya hanya mendapatkan ubin 100rb-200rb per hari di setiap mesin.
Bagaimana saya bisa membuat ubin saya cache lebih cepat ? Apakah ada cara untuk menyempurnakan tilestache-seed.py dan membuatnya lebih cepat?
Pembaruan: Saya telah mencoba membuat indeks spasial di atas meja saya (pada kolom geometri dan kolom yang digunakan untuk menyaring data melalui klausa where) dan saya masih belum melihat peningkatan signifikan dalam kecepatan ubin. Pada tingkat ini hanya Zoom 17 yang akan membawa saya sebulan dan kali ini hanya akan meningkat secara eksponensial ketika saya bergerak menuju Zoom 21
Pembaruan 2: Saya mencoba membuat pandangan terwujud juga dan tidak ada perubahan yang terlihat dalam kinerja, jadi mengoptimalkan database tidak berfungsi. Saya pikir saya perlu mengoptimalkan tilestache-seed.py itu sendiri, atau menemukan cara baru untuk men-cache ubin.
Info Perangkat Keras Saya sedang menjalankan proses caching pada 8 PC yang berbeda, salah satunya adalah i7 dengan ram 32GB dan yang lain adalah i3 dengan ram 4GB tetapi keduanya memberi saya kecepatan caching yang hampir sama (sekitar 100rb per hari)
sumber
Secara default shp2pgsql TIDAK membuat indeks. Anda harus lulus
-I
untuk membuatnya menghasilkan indeks spasial. http://postgis.net/docs/manual-1.3/ch04.html#id435762Periksa apakah tabel Anda memiliki indeks dengan menjalankan
\d tablename
dalam psql. Dalam daftar indeks haruslah garis dengan "inti" (kecuali Anda memilih indeks yang berbeda) dan nama kolom geometri Anda.Anda dapat menambahkan satu setelah fakta juga, lihat http://postgis.net/docs/manual-1.3/ch03.html#id434676 (jangan biarkan catatan tentang lossiness membuat Anda takut):
Karena Anda mungkin juga menggunakan kolom non-spasial dalam kueri, Anda biasanya ingin membuat indeks untuk setiap kolom yang digunakan untuk pencarian. Jika misalnya Anda memiliki permintaan seperti
SELECT * FROM roads WHERE priority = 3;
makapriority
digunakan dan menambahkan indeks untuk itu akan secara signifikan mempercepat hal-hal:CREATE INDEX idx_roads_priority ON roads(priority);
.sumber
Hal lain untuk dicoba jika Anda menggunakan kueri standar adalah membuat tampilan terwujud dari kueri, dan membangun ubin Anda dari itu: http://www.postgresql.org/docs/9.3/static/sql-creatematerializedview.html
Apa yang akan dilakukan adalah membuat Anda tabel yang menyimpan kueri (sehingga Anda berpotensi memperbaruinya di masa mendatang). Pastikan Anda memiliki indeks spasial pada MV anak dan kemudian Anda akan secepat mungkin.
Apa yang mungkin terjadi adalah Anda memiliki indeks spasial, tetapi kemudian Anda hanya memilih beberapa data, yang berarti Anda tidak lagi menggunakan indeks spasial ...
sumber