Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
День добрый. Мир 1С заглядывает к вам. Спросим и здесь, может есть опыт.

Есть таблица SQL, назовем ее "ТоварыНаСкладах_Остатки", в ней хранятся текущие остатки товаров
У нее есть столбцы
Склад
Номенклатура
СерияНоменклатуры
Количество

и кластерный индекс по столбцам (Склад, Номенклатура, СерияНоменклатуры)

и отчет по остаткам

В большинстве своем пользователи выбирают фильтр по Складу и Номенклатуре (используя clustered index seek), однако часто (теоретически часто) они могут захотеть посмотреть остаток по какой-то серии (без указания склада, побыстрячку перед продажей). Именно для таких перцев создан 2-ой некластерный индекс (СерияНоменклатуры,Склад, Номенклатура).

Статистика SQL сервера показала (суровая практика), что за неделю uptime-а чтений по данному некластерному индексу было 15 (таких отчетов с фильтром по серии). Число записей - 125000.

Возникает вопрос - не вырубить ли этот индекс нахрен? Пусть эти десятки редких запросов строятся дольше, зато вырастет скорость записи? Скорость записи очень критична, это - проведение документа расходная накладная - самый критичный оперативный документ.

Как такие вопросы решают спецы по SQL ?
1 сен 16, 14:22    [19617445]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
Ежов Дмитрий Сергеевич,

Почему бы не вырубить индекс и не посмотреть, насколько вырастет скорость записи?
1 сен 16, 14:31    [19617506]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5121
Ежов Дмитрий Сергеевич
Как такие вопросы решают спецы по SQL ?
ИМХО, адекватные люди идут от проблемы к решению. у вас какая проблема? тормозит запись? разбирайтесь с этим, а индекс оставьте на сильно потом...
1 сен 16, 15:25    [19617836]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
komrad
Member

Откуда:
Сообщений: 5756
Ежов Дмитрий Сергеевич
День добрый. Мир 1С заглядывает к вам. Спросим и здесь, может есть опыт.

Есть таблица SQL, назовем ее "ТоварыНаСкладах_Остатки", в ней хранятся текущие остатки товаров
У нее есть столбцы
Склад
Номенклатура
СерияНоменклатуры
Количество

и кластерный индекс по столбцам (Склад, Номенклатура, СерияНоменклатуры)

Статистика SQL сервера показала (суровая практика), что за неделю uptime-а чтений по данному некластерному индексу было 15 (таких отчетов с фильтром по серии). Число записей - 125000.


это у вас всего столько записей в таблице?

Возникает вопрос - не вырубить ли этот индекс нахрен? Пусть эти десятки редких запросов строятся дольше, зато вырастет скорость записи? Скорость записи очень критична, это - проведение документа расходная накладная - самый критичный оперативный документ.

судя по составу кластерного индекса у вас, небось, page splits/sec космическое
1 сен 16, 15:52    [19617971]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
Ежов Дмитрий Сергеевич
В большинстве своем пользователи выбирают фильтр по Складу и Номенклатуре (используя clustered index seek),
однако часто (теоретически часто) они могут захотеть посмотреть остаток по какой-то серии (без указания склада, побыстрячку перед продажей).
Именно для таких перцев создан 2-ой некластерный индекс (СерияНоменклатуры,Склад, Номенклатура).

так если они выбирают количество с условием по СерияНоменклатуры и без склада,
то индекс зачем создан БЕЗ количества, но зато со складом и номенклатурой?
нет, ну может он еще кому нужен, но при чем тогда "Именно для таких перцев"?
1 сен 16, 16:01    [19618028]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
komrad
это у вас всего столько записей в таблице?

лучше спросить, сколько это страниц.
или мегабайт.
ставлю на 50Мб
1 сен 16, 16:03    [19618050]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
кстати, они собрались это кучей серверов обрабатывать.
один никак не справляется,
и поэтому, внимание, им нужен... кластер
1 сен 16, 16:05    [19618060]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
komrad,

2 млн.
1 сен 16, 16:16    [19618115]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
Ежов Дмитрий Сергеевич
Число записей - 125000.

в какой же это системе счисления 125000 переводится в 2 млн?
1 сен 16, 16:20    [19618137]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
Немного для всех.
Оптимизация в моем случае не появляется "от потребности".
Никаких замеров, апдексов не будет, мне за это никто не заплатит.
Заказчик производительностью доволен, проблем нет.

Я просто "в свободное от работы время" запустил скрипт по избыточным индексам. Штуки 3 я убрал сразу, так как чтений по ним не было вообще и по коду они в принципе не использовались (при проектировании - использовались, потом по результатам развития ИБ - перестали).

Вот, такие дела.

Продукт тиражный, не до всех потребителей я могу достучаться и узнать их проблемы. Почему бы не сделать его немного оптимальнее, если это мне "ничего не стоит"?
1 сен 16, 16:21    [19618143]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
o-o,

Число записей в таблице - 2 млн.
Число операций "запись", выполненных ms sql в течении недели - 125000
1 сен 16, 16:22    [19618149]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
komrad
Member

Откуда:
Сообщений: 5756
Ежов Дмитрий Сергеевич
Почему бы не сделать его немного оптимальнее, если это мне "ничего не стоит"?

ну тогда можно и дубли поискать еще
1 сен 16, 16:22    [19618150]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
o-o,

Это моя самописка на 1С, 10 документов, 10 справочников, 2 регистра для закрытия одного учетного критичного контура. Основной учет ведется в отдельной базе 1С7.7
Планируют переходить на типовой продукт от 1С + моя самописка. Под сотню справочников, документов, дофига регистров. Десятки филиалов по стране, несколько сотен пользователей.
1 сен 16, 16:27    [19618178]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
komrad,

"Дубли"
Индекс покрывается другим индексом и не нужен? Про это? Искал, нет таких.
1 сен 16, 16:28    [19618188]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
Ежов Дмитрий Сергеевич,

создание своего "лишнего" индекса не хотите оправдать?
вы проигнорировали мой вопрос,
зачем в него вошли ненужные поля и почему отсутствует "количество"
1 сен 16, 16:30    [19618202]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
o-o,

то индекс зачем создан БЕЗ количества, но зато со складом и номенклатурой?

Особенность индексов 1С. Количество в терминах 1С - это "ресурс", который не входит в индекс и в принципе это - верно. В 90% случаев достаточно кластерного, в 10% - прокатит RID Lookup. Я не могу сам, полностью управлять структурой индекса, только в рамках механизма создания индексов платформой. Внесение изменений в базу ms sql в обход платформы 1С считается нарушением лицензионного соглашения и карается уголовной ответственностью.
1 сен 16, 16:33    [19618215]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
komrad,

"судя по составу кластерного индекса у вас, небось, page splits/sec космическое "
Эта статистика собирается сервером ms sql? Есть скрипт ее посмотреть если да?
1 сен 16, 16:38    [19618237]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
я не понимаю, зачем вы создаете не то, что нужно,
а особенно, зачем включаете в виде ключевых полей то, что НЕ НУЖНО.
ваш ответ на это свет не пролил.

или это тоже 1 заставляет делать?
пишет: не включишь еще парочку полей в ключ, индекс не создам?
а если создать в обход 1С?
сервер что, различает автора индекса и не рассматривает созданные кем-то, кто не 1С?
---
вы увеличили "вес" индекса, соответственно сами же отбили у сервера охоту его использовать.
а потом пишете, что сервер его редко использует.
1 сен 16, 16:45    [19618263]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
o-o,

или это тоже 1 заставляет делать?
пишет: не включишь еще парочку полей в ключ, индекс не создам?
Нет, сама, автоматически создает. Автоматически создаст кластерный индекс на совокупность измерений (Склад, Номенклатура, СерияНоменклатуры). Если я добавлю индекс на какое-либо поле (например, СерияНоменклатуры), 1С автоматически добьет в него остальные "Измерения" и построит некластерный индекс.

Дефакто, там все гораздо сложнее, я упрощено пишу.
1 сен 16, 16:58    [19618318]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
o-o,

"а если создать в обход 1С?
сервер что, различает автора индекса и не рассматривает созданные кем-то, кто не 1С?"

Теоретически - экспертиза и уголовное наказание (как правило условка).
Практически - не встречался с таким.

Однако я был свидетелем примера нарушения лицензионного соглашения 1С, на практике никогда не приводившее ни к чему, однако была и экспертиза и милиция и прокуратура. После этого примера я абсолютно никогда не нарушаю лицензионное соглашение.
1 сен 16, 17:04    [19618336]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5121
Ежов Дмитрий Сергеевич,

1C работает "поверх" БД сама делая очень многое (вплоть до механизма блокировок).
Поэтому попытки оптимизаций со стороны БД (не забивая на лицензионное соглашение) это пустое занятие (в большинстве).
Конкретно в вашем случае вопрос решается нагрузочным тестированием "с и без".
1 сен 16, 17:06    [19618350]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
Из вашего описания следует, что ваше 1С самодержавное, если не сказать самодурное.
Тогда какой смысл в вашем вопросе, если правильные индексы создавать нельзя, а неправильные тоже трогать нельзя?
Вам надо создать тему на другом форуме, по 1С, "как мне с этим жить? "
1 сен 16, 17:11    [19618369]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
Дедушка,

"1C работает "поверх" БД сама делая очень многое (вплоть до механизма блокировок)."

Слухи сильно преувеличены :-) Про управляемые блокировки в курсе.
1 сен 16, 17:14    [19618381]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
Ежов Дмитрий Сергеевич
Member

Откуда: Новокузнецк-Москва, Россия
Сообщений: 100
o-o,

1С просто не доверяет программистам 1С тонкую настройку SQL, из принципа "как бы не вышло что" и предоставляет универсальное оптимальное решение. Но это к делу не относится. Насчет моей темы - ответ для себя я понял.
Последний вопрос - как узнать page splits/sec ?
1 сен 16, 17:16    [19618389]     Ответить | Цитировать Сообщить модератору
 Re: Насколько лишним может быть индекс.  [new]
o-o
Guest
Кстати, ваш кластерный ключ все равно попал бы во все уровни некластерного с ключом Склад, тк сам по себе склад неуникален. И если создать правильный индекс и сложить количество в include, получится ровно та же таблица, просто строки в другом порядке отсортированы.
Чего-то 2 одинаковые таблицы по 2млн строк это явный перебор.
А 1С всегда делает такие интересные кластерные с ключом, включающем все колонки, кроме одной?
Как-то сразу расхочется некластерные создавать
1 сен 16, 17:51    [19618503]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить