Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Оптимизация базы  [new]
Mdel
Member

Откуда:
Сообщений: 136
Имеем: SQL Server 2008 R2 Ent, крутится на физическом сервере с 48 проц. и 96 оперативы.
База данных программы SurfCop (надстройка для отчетов ISA Server, точнее TMG 2010).

Размер БД - порядка 80 gb, в базе 7-10 таблиц, из них 8 справочников мелких и 2 крупных таблицы, в которых суммарно порядка 500 млн строк. Куча индексов. Это данные за 1 месяц.

Простой запрос вида select count(*) from table отрабатывает примерно 1-2 сек.
Чуть более сложный запрос для отчета по статистике практически невозможно сформировать. МОжно ждать час, два, три....

Что делалось: создал план обслуживания, в нем идет реиндексация, сжатие, в общем все стандартные процедуры. План проходит успешно, размер базы уменьшается на несколько Gb, но проблемы это не решает.

В связи с этим вопрос: как можно оптимизировать базу для более быстрой работы? Использовать секционирование таблиц и индексов? А еще какие варианты?
29 ноя 13, 15:55    [15213566]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
sdet
Member

Откуда:
Сообщений: 463
Mdel,

А в план этого Чуть более сложного запроса не заглядовали?
29 ноя 13, 16:00    [15213627]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Проблему долго работающих запросов решают через оптимизацию этих запросов.
29 ноя 13, 16:00    [15213628]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
Mdel
Member

Откуда:
Сообщений: 136
И каким это образом я должен заглянуть в запрос, который инициирует стороннее ПО? Ну да, отслежу я его через Profiler, пусть даже найду, в чем беда, чем мне это поможет то? Софт исправить я не смогу.

В случае полумиллиарда записей группировка с сортировкой таблицы из 50 полей займет достаточное количество времени. Поэтому и вопрос соответствующий.
30 ноя 13, 07:48    [15216896]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
qwerty112
Guest
Mdel
И каким это образом я должен заглянуть в запрос, который инициирует стороннее ПО? Ну да, отслежу я его через Profiler, пусть даже найду, в чем беда, чем мне это поможет то? Софт исправить я не смогу.

а софт, исправлять и не нужно (возможно, что и не помешало бы, но может и без этого обойдётся), - запрос-то выполняет сервер
выкладывайте план выполнения запроса - можно будет о чём-то говорить ...

зы
Mdel
создал план обслуживания, в нем идет реиндексация, сжатие, в общем все стандартные процедуры

это шринк, чтоле ?
вообще, такая "стандартная процедура" как шринк "без повода" - может вполне серьёзно осложнять жизнь ...
в БД запись идёт ? т.е. она не только "для select-ов" ?
30 ноя 13, 10:40    [15216997]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Mdel
И каким это образом я должен заглянуть в запрос, который инициирует стороннее ПО? Ну да, отслежу я его через Profiler, пусть даже найду, в чем беда, чем мне это поможет то? Софт исправить я не смогу.

В случае полумиллиарда записей группировка с сортировкой таблицы из 50 полей займет достаточное количество времени. Поэтому и вопрос соответствующий.


для этого на ЕЕ придумали indexed view и чото-то там query rewrite
30 ноя 13, 11:32    [15217050]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
Mdel
Member

Откуда:
Сообщений: 136
Отловил запрос. Время выполнения 11 минут.

SELECT SUM(F_Hits) AS Sum_10, (SELECT F_Name FROM sca1d974ae713fa7bea9 
WHERE F_Id = F_ClientLogin) AS N16_Name, F_WebSiteName, SUM(F_BytesTotal) AS Sum_13, SUM(F_DownloadTime) AS Sum_14, SUM(F_BytesSent) AS Sum_11, SUM(F_BytesRecv) AS Sum_12 FROM sc02e1423e27452d2e2b_MAINd7 
WHERE (1=1) AND (F_Direction = 0)
 GROUP BY F_ClientLogin, F_WebSiteName


Рекомендации по индексам все выполнены (не было индекса по F_Direction). План прилагаю.
Размер базы 130 Гб.

К сообщению приложен файл (surfcop.sqlplan - 42Kb) cкачать
3 дек 13, 07:06    [15229341]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
aleks2
Guest
SELECT SUM(F_Hits) AS Sum_10
     , (SELECT F_Name 
          FROM sca1d974ae713fa7bea9 
          WHERE F_Id = F_ClientLogin
        ) AS N16_Name
    , F_WebSiteName
    , SUM(F_BytesTotal) AS Sum_13
    , SUM(F_DownloadTime) AS Sum_14
    , SUM(F_BytesSent) AS Sum_11
    , SUM(F_BytesRecv) AS Sum_12 
  FROM sc02e1423e27452d2e2b_MAINd7 
  WHERE (1=1) AND (F_Direction = 0)
  GROUP BY F_ClientLogin, F_WebSiteName


Для таких страданий давно придумали Indexed View.
Ибо чудес не бывает.

Касаемо же журнала ISA, где идет монотонное добавление записей, такие весчи делают накопительной обработкой.
Вот моя самописная "надстройка для отчетов ISA Server" никогда не тратит на отображение отчета больше 5-10сек.
Ибо она их досчитывает эти отчеты постоянно. По мере записи журнала.
3 дек 13, 07:41    [15229361]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
ZOOKABAKODER
Member

Откуда:
Сообщений: 178
Mdel
Что делалось: создал план обслуживания, в нем идет реиндексация, сжатие, в общем все стандартные процедуры. План проходит успешно, размер базы уменьшается на несколько Gb, но проблемы это не решает.

Про "сжатие" можно поподробнее? И как это у вас размер базы уменьшился?
3 дек 13, 09:54    [15229674]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация базы  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35197
Блог
locky
для этого на ЕЕ придумали indexed view и чото-то там query rewrite


еще придумали ОЛАП, в 90% куб будет выгоднее и быстрее
3 дек 13, 12:14    [15230781]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить