миллион транзакций - улучшить производительность сайта - PullRequest
1 голос
/ 10 мая 2011

У меня есть страница, которая вызывает хранимую процедуру, чтобы прочитать от 3 до 4 миллионов данных, выполнить некоторые вычисления и вернуть небольшую таблицу данных. SP медленный ок. От 20 до 30 сек поэтому общая загрузка страницы медленная.

Буду ли я пересматривать SP? но проблема в том, что что бы я ни делал, моим конечным результатом будет маленький Datatable.

Есть ли предложения по улучшению производительности?

Ответы [ 3 ]

1 голос
/ 10 мая 2011

Если вы обрабатываете 3 или 4 миллиона строк данных и действительно выполняете настоящую работу, 20 или 30 секунд - это довольно приличная производительность, ИМХО. Проверьте план выполнения вашей хранимой процедуры. В идеальном мире каждая таблица будет получать результаты поиска индекса, а не сканирования таблицы. Проконсультируйтесь с вашим администратором базы данных, если вы не уверены, как интерпретировать результаты showplan. Я предполагаю, что вы используете SQL Server.

Убедитесь, что ваши таблицы имеют соответствующие индексы и что статистика актуальна. Обновите их, если нет. Перекомпилируйте хранимую процедуру. Параметры, передаваемые хранимой процедуре, могут запутывать кэшированный план выполнения, если значения являются странными. Вы можете предотвратить это, кодируя вашу хранимую процедуру следующим образом:

create proc myProc

  @p1 varchar(32) 

as

  declare
    @p1Local varchar(32)

  set @p1Local = @p1

  ...
1 голос
/ 10 мая 2011

Если таблица не обновляется, то часто создайте «агрегированную» таблицу с более высокой производительностью.

0 голосов
/ 13 мая 2011

Если ваши данные не обновляются слишком часто, вы можете создать индексированное представление.

http://msdn.microsoft.com/en-us/library/dd171921(v=sql.100).aspx:

индексированные представления обеспечивают дополнительные преимущества производительности, которые не могут быть достигнуты с помощью стандартных индексов. Индексированные представления могут повысить производительность запросов следующими способами: Агрегаты могут быть предварительно вычислены и сохранены в индексе, чтобы минимизировать дорогостоящие вычисления во время выполнения запроса. Таблицы могут быть предварительно объединены, и результирующий набор данных может быть сохранен. Комбинации объединений или объединений могут быть сохранены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...