По прошествии времени SQL Server отвечает медленно
От: thrasher Россия http://BasisPlatform.ru
Дата: 09.08.07 04:08
Оценка:
Здравствуйте, очень нужна помощь.

По прошествии некоторого времени (несколько дней), сервер начинает очень медленно отдавать данные.

Софтина написана на VC++ 2005, работатет через OLE DB, СУБД SQL Server 2005.
Структура интересующей таблицы (Log):

Id, bigint, ключь с автоинкрементом
LogTime, datetime
Channel, int
LogValue, float
ChanType, int

Каждую минуту в эту таблицу добавляются записи количеством от 24 до 64. Понятно, что база очень быстро набирает вес и уже через неделю счет идет на гигабайты (а время цикла — 400 дней!).
В какой-то момент (предположителшьно раз в два дня), необходимо получить ряд отчетов, основываясь именноно на этой таблице. Самый простой и наиболее часто используемый запрос:

SELECT * FROM Log WHERE Channel=%d AND LogTime >= '%.2d/%.2d/%d %.2d:%.2d'\
AND LogTime <= '%.2d/%.2d/%d %.2d:%.2d'

строка создается sprintfом, по этому понятно, что означают %*d, сюда подставляются нужные значения.
Этот запрос может повторяться неоднократно, для небольшого количества данных (за два часа, соответственно 12 повторов для суточных данных).

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

В литературе, к сожалению, ни чего рядом с этим вопросом не нашел (может не там искал).
Единственная идея — плюнуть на SQL Server и сделать все по старинке файлы данных, но сами понимаете, что этот вариант для меня последний.

Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.