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

Откуда:
Сообщений: 105
Всем добрый день! Не могу найти ничего дельного в инете на эту тему, может кто подскажет?
К примеру есть таблица, не куча, с первичным ключом (ключ по одному столбцу), в ней есть еще 6 столбцов и на каждом не уникальный индекс, смотрю sys.dm_db_index_usage_stats, по одному столбцу user_seeks=29, user_scan=0, user_lookups=0 а user_updates=35000, если удалить этот индекс возрастет ли скорость операций update?
7 окт 15, 09:41    [18244935]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
Glory
Member

Откуда:
Сообщений: 104751
dark_DBa_dmin
если удалить этот индекс возрастет ли скорость операций update?

Ну так попробуйте и узнаете, что изменится в вашем конкретном случае. И только в нем.
7 окт 15, 09:43    [18244945]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
dark_DBa_dmin
если удалить этот индекс возрастет ли скорость операций update?
Наивсенепременнейше. Вот только удастся ли зарегистрировать это ускорение, превысит ли оно погрешность измерения - не факт.
7 окт 15, 09:48    [18244965]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Glory
dark_DBa_dmin
если удалить этот индекс возрастет ли скорость операций update?

Ну так попробуйте и узнаете, что изменится в вашем конкретном случае. И только в нем.


Ну эт понятно, что попробовать надо и что каждый случай уникален.)Вообще таких индексов много, когда была разработка видимо решили добавить индекс на каждый столбец, в независимости от того как часто они будут использоваться.

Вырезка статьи с Хабра
(Ни одно доброе дело не должно оставаться безнаказанным. По крайней мере, именно так и обстоит дело с индексами. Разумеется, индексы отлично себя показывают, пока вы выполняете запросы на выборку данных оператором SELECT, но как только начинается частый вызов операторов INSERT, UPDATE и DELETE, так пейзаж очень быстро меняется.
Когда вы инициируется запрос данных оператором SELECT, подсистема запросов находит индекс, продвигается по его древовидной структуре и обнаруживает искомые данные. Что может быть проще? Но все меняется, если вы инициируете оператор изменения, такой как UPDATE. Да, для первой части оператора подсистема запросов может снова использовать индекс для обнаружения модифицируемой строки – это хорошие новости. И если происходит простое изменение данных в строке, не затрагивающее изменение ключевых столбцов, то процесс изменения пройдет вполне безболезненно. Но что, если изменение приведет к разделению страниц, содержащих данные, или будет изменено значение ключевого столбца, приводящее к переносу его в другой индексный узел – это приведёт к тому, что индексу может потребоваться реорганизация, затрагивающая все связанные индексы и операции, в результате будет повсеместное падение производительности.
Аналогичные процессы происходят при вызове оператора DELETE. Индекс может помочь найти месторасположение удаляемых данных, но само по себе удаление данных может привести к перестановке страниц. Касаемо оператора INSERT, главного врага всех индексов: вы начинаете добавлять большое количество данных, что приводит к изменению индексов и их реорганизации и все страдают.
Так что учитывайте виды запросов к вашей базе данных при размышлениях какой тип индексов и в каком количестве стоит создавать. Больше не значит лучше. Перед тем как добавить новый индекс на таблицу просчитайте стоимость не только базовых запросов, но и объем занимаемого дискового пространства, стоимость поддержания работоспособности и индексов, что может привести к эффекту домино для других операций. Ваша стратегия проектирования индексов один из важнейших аспектов внедрения и должна включать в рассмотрение множество соображений: от размера индекса, количества уникальных значений, до типа поддерживаемых индексом запросов.)

Т.е. если этих индексов 7, по одному на каждый столбец, то система при добавлении новой записи должна перестроить деревья всех 7 индексов? И если мы убирем не нужные индексы скорость операций вставки ускориться.
7 окт 15, 09:52    [18244986]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Akina
dark_DBa_dmin
если удалить этот индекс возрастет ли скорость операций update?
Наивсенепременнейше. Вот только удастся ли зарегистрировать это ускорение, превысит ли оно погрешность измерения - не факт.


Я думаю если сделать вставку большого кол-ва данных с индексом и без разница будет видна.
7 окт 15, 09:55    [18245006]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
Glory
Member

Откуда:
Сообщений: 104751
dark_DBa_dmin
Т.е. если этих индексов 7, по одному на каждый столбец, то система при добавлении новой записи должна перестроить деревья всех 7 индексов?

Для чего перестраивать все идексы, если изменено одно поле ? За кампанию что ли ?
И изменение ключа одной записи вовсе не означает перестроение всех остальных ключей индекса

Сообщение было отредактировано: 7 окт 15, 09:57
7 окт 15, 09:55    [18245008]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
dark_DBa_dmin
если удалить этот индекс возрастет ли скорость операций update?
Если update затрагивает поля из этого инедкса, или ПК, то возрастёт.
7 окт 15, 09:56    [18245011]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
dark_DBa_dmin
Я думаю если сделать вставку большого кол-ва данных с индексом и без разница будет видна.
А, не только update, но и insert?
Да, скорость вставки увеличится, если удалить инедкс.

Но вообще говоря замедление из за инедкса небольшое, оно не может быть больше или сравнимо с тем временем, которое требуется без инедкса..
7 окт 15, 09:58    [18245017]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
alexeyvg
dark_DBa_dmin
если удалить этот индекс возрастет ли скорость операций update?
Если update затрагивает поля из этого инедкса, или ПК, то возрастёт.


Спасибо. А при операции insert?
7 окт 15, 09:59    [18245021]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
dark_DBa_dmin
Т.е. если этих индексов 7, по одному на каждый столбец, то система при добавлении новой записи должна перестроить деревья всех 7 индексов? И если мы убирем не нужные индексы скорость операций вставки ускориться.
Не перестроить, а вставить значение только для этой одной записи. Но да, именно для всех семи инедксов (ну, за некоторыми исключениями, например, если значение не попадает в условие для фильтрованного индекса, то и не будет обновлять)
7 окт 15, 10:00    [18245031]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
dark_DBa_dmin
Спасибо. А при операции insert?

alexeyvg
А, не только update, но и insert?
Да, скорость вставки увеличится, если удалить инедкс.

Но вообще говоря замедление из за инедкса небольшое, оно не может быть больше или сравнимо с тем временем, которое требуется без инедкса..
7 окт 15, 10:00    [18245037]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
alexeyvg
dark_DBa_dmin
Я думаю если сделать вставку большого кол-ва данных с индексом и без разница будет видна.
А, не только update, но и insert?
Да, скорость вставки увеличится, если удалить инедкс.

Но вообще говоря замедление из за инедкса небольшое, оно не может быть больше или сравнимо с тем временем, которое требуется без инедкса..


Спасибо. Хотите сказать что если было 100 index_seek на 40000 updates то индекс себя оправдывает?
7 окт 15, 10:01    [18245039]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
dark_DBa_dmin
Всем добрый день! Не могу найти ничего дельного в инете на эту тему, может кто подскажет?

Руководство по проектированию индексов SQL Server
7 окт 15, 10:02    [18245049]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
skyANA
dark_DBa_dmin
Всем добрый день! Не могу найти ничего дельного в инете на эту тему, может кто подскажет?

Руководство по проектированию индексов SQL Server


Класс! Спасибо!)
7 окт 15, 10:03    [18245053]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Вырезка из статьи https://msdn.microsoft.com/ru-ru/library/jj835095(v=sql.120).aspx

Вопросы производительности

--------------------------------------------------------------------------------

Избегайте добавления неиспользуемых столбцов.Добавление слишком большого количества столбцов, ключевых или неключевых, может оказать следующее влияние на производительность.
•На странице будет помещаться меньше строк индекса.Это может привести к увеличению количества операций ввода-вывода и снизить эффективность кэша.
•Увеличение места на диске, требуемого для хранения индекса.В частности, добавление типов данных varchar(max), nvarchar(max), varbinary(max) и xml в качестве неключевых индексных столбцов может значительно повысить требования к месту на диске.Это обусловлено тем, что значения столбцов копируются на конечный уровень индекса.Поэтому они находятся и в индексе, и в базовой таблице.
•Обслуживание индекса может увеличить время выполнения операций изменения, вставки, обновления и удаления в базовой таблице или индексированном представлении.

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

Т.е. все таки индексы которые за месяц использовались пару раз, но обновлялись несколько десятков/сотен тысяч раз это не очень хорошо.
7 окт 15, 10:08    [18245086]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
Glory
Member

Откуда:
Сообщений: 104751
dark_DBa_dmin
Т.е. все таки индексы которые за месяц использовались пару раз, но обновлялись несколько десятков/сотен тысяч раз это не очень хорошо.

Разумеется, что ненужный хлам как минимум занимает место.
Просто не нужно ожидать, что при удалении этого хлама, производительность увеличится в десятки раз
7 окт 15, 10:16    [18245122]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Glory
dark_DBa_dmin
Т.е. все таки индексы которые за месяц использовались пару раз, но обновлялись несколько десятков/сотен тысяч раз это не очень хорошо.

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


Что индексы занимают место это понятно, причем они занимают очень прилично места. Я и не ожидаю увеличения произв-ти в 10ки раз, мне интересна будет ли увеличение вообще, точнее оно будет, но будет ли оно заметно?
7 окт 15, 10:21    [18245137]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
Glory
Member

Откуда:
Сообщений: 104751
dark_DBa_dmin
причем они занимают очень прилично места.



dark_DBa_dmin
мне интересна будет ли увеличение вообще, точнее оно будет, но будет ли оно заметно?

Может и не быть для ваших inser/update/delete.
А для тех "которые за месяц использовались пару раз" производительность может упасть значительно
Если вы ищите универсальную формулу подсчета количества нужных индексов, то ее нет
7 окт 15, 10:26    [18245156]     Ответить | Цитировать Сообщить модератору
 Re: Как индексы влияют на inser/update/delete  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Glory
dark_DBa_dmin
причем они занимают очень прилично места.



dark_DBa_dmin
мне интересна будет ли увеличение вообще, точнее оно будет, но будет ли оно заметно?

Может и не быть для ваших inser/update/delete.
А для тех "которые за месяц использовались пару раз" производительность может упасть значительно
Если вы ищите универсальную формулу подсчета количества нужных индексов, то ее нет


Это понятно что этим нескольким/одному запросу который искал это индекс будет плохо, и что этот запрос мог быть очень важен.
В общем рецепт как всегда один: ничего не трогать пока все работает.
7 окт 15, 10:38    [18245210]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить