Используется ли загрузка ЦП в SQL или в демоне mapguide?
Одна из проблем, с которой мы столкнулись, заключается в том, что картограф не настолько умён в написании запросов. Если вы используете максимальное масштабирование и отображаете небольшое подмножество легенды (скажем, только передачу с этим уровнем масштабирования), оно будет запрашивать каждый объект в области просмотра без применения какого-либо другого фильтра. Затем он просматривает тысячи записей и применяет тему (которая использует отдельный фильтр).
То, что вы могли бы попытаться сделать, это написать слои для разных уровней масштабирования и использовать фильтр запросов, чтобы ограничить объем данных, возвращаемых из SQL (что, вероятно, занимает так много процессорного времени). Это уменьшило время начальной загрузки наших линий передачи и распределения (единственное, что имеет смысл отображать на этом уровне) до нескольких миллисекунд по сравнению с 20+ секундами.
-
Я говорил только о том, что вы запрашиваете только те данные, которые нужны слою. Допустим, вы отображаете идентификаторы 1, 2, 3 и 4.
Скажем, у вас есть дисплей 1 и 2 в масштабах 0 -> бесконечность. В то время как 3 и 4 только начинают, скажем, 20000 футов. По умолчанию mapguide в основном делает select * с ограничительной рамкой области просмотра. Затем он будет перебирать все данные, относящиеся к теме.
Так, скажем, на 30 000 футов он будет запрашивать все данные, но все равно должен пройти через них.