Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
Приветствую. Написал один сайт и во время эксплуатации возникла проблема, что при выполнении больших запросов страница отлетает по тайм-ауту. Пробовал выполнять запрос в QueryAnalizer-е - долго (мин 10), но идет. Как правильно сделать, чтобы страница ждала до конца выполнения (пусть даже 10-15 мин)? Есть мысль использовать SqlCommand.BeginExecuteReader Что можете посоветовать? ЗЫ. Сразу оговорю условия работы сайта. Работает он на ASP.NET 1.1 (буду переписывать на 2.0), база на MS SQL2000. Проблемы начинаются, когда у меня идет выборка из таблиц и в таблице находится порядка 3 млн записей (сервер не очень мощный :( ). В планах есть покупка нового, но хочется решить проблему и на перспективу, т.к. объемы растут и растут быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2006, 17:32 |
|
||
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
У SqlCommand есть свойство CommandTimeout. Ставь в миллисекундах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2006, 17:36 |
|
||
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
Попробую. А все таки про SqlCommand.BeginExecuteReader - стоит этим заморачиваться или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2006, 17:41 |
|
||
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
3 млн. записей не так много. Видимо надо посмотреть есть ли индексы на страницах, перестроить статистику, оптимизирован ли запрос на выборку, выбирать не все 3 млн. ил 100 тыс, а тысячу, кэшировать их, отображать юзеру 20 - 50 записей, использовать пейджинг. Можно конечно и увеличить время ожидания ответа, но 10 минут это не нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2006, 18:33 |
|
||
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
Хм... Значит пока я для себя решил: - проверить индексы (хотя я их уже смотрел - вроде все ок); - сделать view на таблицу; - разобраться с кешированием view-а на SQL. Можно чуть подробнее про перестройку статистики и пейджинг? И все таки интересует мнение про асинхронное выполнение запросов из ASP.NET (типа SqlCommand.BeginExecuterReader). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2006, 18:53 |
|
||
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
Со временем работа с индесами становится медленнее, условно говоря из-за того, что данных становится больше и первично построенные индексы, расчитанные на малый объем данных, плохо справляются с большим объемом. Для перестройки статистики есть команда UPDATE STATISTICS, как ей пользоваться см. в SQL book online. Пейджинг, имелось ввиду отображение данных пользователю по странично ,например по 20-50 записей, сперва первые 50, потом вторые с 50 по 100. Для этого можно использовать грид в АСП.НЕТ. Есть несколько вариантов как реализовать такое отображение ,например использовать хранимые процедуры выбирающие данные порциями, или вытащить 1000 записей в DataSet, положить их в кэшь и брать оттуда. Еще советую посмотреть в QueryAnalizer Execution Plan, выбрав его в меню Query, он покажет где тормозится запрос. Единственное, что с Execution Plan -ом надо уметь работать. Можно и асинхронно выпонять запросы, но все это уход от основной проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 12:20 |
|
||
|
Выполненение долгих запросов к MS SQL2000 в ASP.NET
|
|||
|---|---|---|---|
|
#18+
Хм. Вот про перестройку индексов спасибо. Буду копать. Пейджинг в моем случае не актуален. У меня отображается 50-100 строк. Просто в селекте идет группировка по большому массиву данных. Про QueryAnalizer Execution Plan я знал. Отличная вещь. Потихоньку ее использую :) Спасибо за наводки. Теперь буду это все реализовывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 13:05 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33971975&tid=1389790]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 392ms |

| 0 / 0 |
