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

Откуда:
Сообщений: 484
Всем привет.
Такой вот вопрос. Есть таблица, в которой хранятся записи. На каждый день приходится по 200-600 тысяч записей. Сейчас в ней ~300м записей. Решил подчистить.

Написал запрос:

delete from Table where dtCreated < '20080801'
go
delete from Table where dtCreated < '20080802'
go
....
delete from Table where dtCreated < '20080830'
go

За июнь данные удалились за 4 мин. За июль - за 10 сек. За август - почти пол-часа. Да и сервер стал проседать - пользователи начали звонить. Почему так?

Вот таблица:
CREATE TABLE [dbo].[RateTick] (
[iRateId] [int] IDENTITY (1, 1) NOT NULL ,
[iProviderId] [int] NOT NULL ,
[iFirmId] [int] NOT NULL ,
[iSymbolId] [int] NOT NULL ,
[mBid] [money] NOT NULL ,
[mAsk] [money] NOT NULL ,
[mFactor] [money] NULL ,
[dtCreated] [datetime] NOT NULL
) ON [PRIMARY]
GO

Вот индексы:
CREATE CLUSTERED INDEX [IX_RateTick_Created] ON [dbo].[RateTick]([dtCreated], [iFirmId]) ON [PRIMARY]
GO

CREATE INDEX [IX_RateTick_Symbol] ON [dbo].[RateTick]([iSymbolId], [iFirmId]) ON [PRIMARY]
GO

CREATE INDEX [IX_RateTick_Symbol_Created] ON [dbo].[RateTick]([iSymbolId], [dtCreated] DESC , [iFirmId]) ON [PRIMARY]
GO


Microsoft SQL Server 2000 - 8.00.2050 (Intel X86) Mar 7 2008 21:29:56 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
3 ноя 09, 17:14    [7878331]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Читал я читал, но так и не понял одну вещь:
А какие вообще планировались регламентные работы по обслуживанию БД ?
(я имею в виду перед ее пуском в эксплуатацию)
3 ноя 09, 17:52    [7878578]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
13th
Member

Откуда:
Сообщений: 484
Паганель, никаких.
3 ноя 09, 18:38    [7878783]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
13th
Member

Откуда:
Сообщений: 484
а какие надо?
3 ноя 09, 18:53    [7878861]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
13th
а какие надо?


- резервное копирование
- проверка целостности
- обновление статистик
- перестроение индексов
- выявление нагрузочных тенденций и реагирование на них
- контроль достаточности оборудования
- ...
3 ноя 09, 20:39    [7879213]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
13th
а какие надо?
Я не знаю.
Во-первых, я не DBA, потому могу только рекомендовать,
а во-вторых, я не знаю всех требований, которым должна отвечать Ваша система

Но, возможно, в Вашей задаче устаревшие данные надо периодически удалять,
а такие вещи имхо надо планировать и (самое главное) согласовывать с начальством
4 ноя 09, 09:38    [7880238]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
13th
Member

Откуда:
Сообщений: 484
Не, ну резервирование-то и проверка индексов по основным таблицам производится. Просто резервирование - это очевидно, я про него что-то не подумал, когда ты спросил про регламентные работы.
Насчёт перестроения индексов - Думаю, перестроение индекса на такой таблице с 300М записей положит сервер на пару часов. Если индексы целые - какой в этом смысл?

таблицу почистил при помощи старого трюка:

Select * into #t from Table where ...
drop index ...
truncate table Table
insert into Table select * from #t
create index ...
6 ноя 09, 12:09    [7890733]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
13th
За июнь данные удалились за 4 мин. За июль - за 10 сек. За август - почти пол-часа. Да и сервер стал проседать - пользователи начали звонить. Почему так?

Может, пользователи еще обращались к данным за август?
6 ноя 09, 12:23    [7890863]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
13th
Member

Откуда:
Сообщений: 484
Исключено. Обращение пользователей было в этот момент невозможно.
6 ноя 09, 20:40    [7894691]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
13th
Member

Откуда:
Сообщений: 484
блокировок тоже никаких не было, это я тоже проверял
6 ноя 09, 20:40    [7894693]     Ответить | Цитировать Сообщить модератору
 Re: Растёт время выполнения запроса. Почему?  [new]
juwdoks
Member

Откуда:
Сообщений: 144
13th,

Может сильно расти tempdb. Стоит проверить.
7 ноя 09, 21:46    [7897211]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить