Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Оптимальная выбока активных записей  [new]
Вадим2
Guest
Добрый день.
Ессть таблица , в ней примерно 100 000 строк. Есть столбец статус - форен кей. Статусов 5 , 2 - активных , 3 неактивных. Данные в основном выбыраются в основном (95 %), только активные. Активных строк порядка 400-500 из 100000. В день добавляются примерно 1000- 2000 записей. Стутусный столбец tinyint (10, 20 - активные, 30,40, 50 -нет). Подскажите как оптимальней сделать выборку активных записей , не тормозив особенно добавление: кластерный индекс на статус с сортировкой desc, материализованную вью с только активными , еще что-нибудбь ?
Сервер 2005 sp3.

Cпасибо.
7 дек 09, 11:24    [8027192]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Кластерный индекс точно нет.
А что, производительность выборки с обычным индексом вас не устраивает?
100 000 строк - очень маленький объем.
1500 - в день
45000 - в месяц
540 000 - в год.
Изобретать велосипед тут не нужно.

З.Ы. При большом количестве данных стоит задуматься о секционировании. Ну или можно просто,
разбить существующую таблицу на две - с активными статусами и с неактивными.
7 дек 09, 11:50    [8027471]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
Вадим2
Guest
Пробовал некластерный, уж слишком широкий он получается так много столбцов добавляются в INCLUDE дабы избавиться от букмрков. Поэтому подумал про кластерный. Пробавал и вьюху, как-то тоже тормозит. Пользователей порядка 20-30, есть пиковые нагрузки примерно 10 -11 утра.
7 дек 09, 12:02    [8027627]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
С опцией include "распухает" только конечный листовой уровень индекса.
Сам индекс от этого больше не становится.

Вы тесты с некластерным индексом проводили или просто испугались большого количества столбцов?

Кластерный вам тут точно не подойдет, так как будет существенная деградация производительности по вставке.
7 дек 09, 12:09    [8027696]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
aleks2
Guest
Вадим2
Пробавал и вьюху, как-то тоже тормозит.


Огласите способ "пробования"?
7 дек 09, 12:12    [8027732]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
Вадим2
Guest
Естествено некластерны с опцией include.
Проверял вот так : создал вьюху с кластерным на айди операции с фильтром на только активные активные записи. В приложении в 20 потоках, добалял новые и комлитлил случайные существующие и параллельно выьирая данные. И постоянно подвисание с IO_Completion.
7 дек 09, 12:33    [8027944]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Вадим2
Естествено некластерны с опцией include.
Проверял вот так : создал вьюху с кластерным на айди операции с фильтром на только активные активные записи. В приложении в 20 потоках, добалял новые и комлитлил случайные существующие и параллельно выьирая данные. И постоянно подвисание с IO_Completion.
Индексированное представление создавали? А версия сервера какая? И редакция?
CREATE TABLE не мешало бы показать.
И планы
7 дек 09, 12:42    [8028029]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
aleks2
Guest
Вадим2
Естествено некластерны с опцией include.
Проверял вот так : создал вьюху с кластерным на айди операции с фильтром на только активные активные записи. В приложении в 20 потоках, добалял новые и комлитлил случайные существующие и параллельно выьирая данные. И постоянно подвисание с IO_Completion.


Дарагой, вставка данных В ЛЮБОМ СЛУЧАЕ (окромя, канешно, сферической вставки в вакууме) будет блокировать таблицу/индекс/индексированное_вью.
Тута у тебя нету перспектив.

А вот выборка из Indexed View будет быстрее всего. Только не надо ожидать чудес.
7 дек 09, 12:45    [8028052]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
iap,
На сколько я понял, при материализованнои представлении у человека тормозят запросы не на выборку, а на вставку/изменение/удаление.
7 дек 09, 12:46    [8028062]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
--__Александр__--
iap,
На сколько я понял, при материализованнои представлении у человека тормозят запросы не на выборку, а на вставку/изменение/удаление.
Надо ещё быть уверенным, что индекс вообще используется.
7 дек 09, 12:51    [8028110]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
Вадим2
Guest
Конечно зависание при существовании вью. Оттуда данные же при изменеии статуса удаляются. И OI_Completition именно при чтение активных, добавлении активных , обработке существующих(удалении из вью)
Версия верверя я же писал 2005 sp3. редакция enterprise.
План запроса какой надо ? с некластерным индексом ?
7 дек 09, 13:25    [8028371]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Вадим2
Версия верверя я же писал 2005 sp3
Извините, не заметил. :-(
7 дек 09, 13:52    [8028629]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
aleks2
Guest
Вадим2
Конечно зависание при существовании вью. Оттуда данные же при изменеии статуса удаляются. И OI_Completition именно при чтение активных, добавлении активных , обработке существующих(удалении из вью)
Версия верверя я же писал 2005 sp3. редакция enterprise.
План запроса какой надо ? с некластерным индексом ?


Ишо раз повторюсь для слабо слышащих: НЕТУ У ТЕБЯ ВАРИАНТОВ, так шоб все было и ничего тебе за это не было.

Все, перечисленные тобой варианты по "затратам" приблизительно эквивалентны. Чего-нибудь ишо - не существует.

Indexed View предвпочтительнее, поскольку, как ты уверяешь, "Активных строк порядка 400-500 из 10000", т.е. это будет "авсем нэбольшая" табличка и переплющить ее легче, чем 10000 основной.
7 дек 09, 14:38    [8029247]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальная выбока активных записей  [new]
1
Guest
сделать партишин по статусу.
7 дек 09, 17:08    [8030712]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить