PDA

Просмотр полной версии : Оптимизация СУБД. Индексы MS SQL и «1С»



gendalf_01
20.02.2019, 16:10
Материал подготовил заместитель руководителя отдела программных разработок и поддержки компании «ГЭНДАЛЬФ» Николай Таранов

Индексы – это специальные ссылки, созданные для повышения производительности СУБД MS SQL. Как правило, они упорядочены по отдельным столбцам.
Создание индексов в MS SQL и «1С» помогает оперативно находить нужные данные в таблице. Кроме того, индексы способны повысить скорость выполненные запросов и снизить негативное влияние блокировок (прежде всего это касается многопользовательского режима).

Как создавать индексы в «1С»?

Существует 2 метода:

1. Неявный. В этом случае платформа может создать индексы самостоятельно, если для каждого объекта метаданных заранее известны ключи (например, код, ссылка или наименование).
2. Явный. Создать индексы можно 3 способами:
• Установить флаг «Индексировать» у поля реквизита или измерения. С помощью опции «Индексировать с дополнительным упорядочиванием» добавляем индекс в поле «Код» или «Наименование» (в первую очередь для динамичных списков).
• Добавить поле в «Критерии отбора».
• Указать поле для индексации в запрос с помощью опции «Индексировать по».

Какие бывают индексы в MS SQL?

Индексы MS SQL представлены в виде страниц с данными. Размер одной страницы – 8 Кбайт.
• Некластерные. Индексы MS SQL такого вида организуют ссылки и при этом не перестраивают таблицы.
• Кластерные. Необходимы для создания структуры таблицы согласно индексу. Например, когда данные упорядочены по алфавиту. Такой индекс не применяется для регулярно изменяющихся столбцов, потому что система управления базы данных перестраивает таблицу в соответствии с этим индексом.
• Уникальные. Такого индекс уникален по ключевым полям и представляет из себя «надстройку» для двух предыдущих видов индексов.
Индексы MS SQL способны повысить производительность СУБД, однако у них есть недостаток. Они занимают место на диске, из-за чего работа системы управления базы данных на запись строк замедляется.

Какие существуют ключи индексов MS SQL?

• Первичный – ряд столбцов, которые уникальным образом характеризуют строки.
• Внешний – поле таблицы (в «1С» такой вид ключей не используется). Внешний ключ хранит значение первичного ключа, обеспечивая связь между каждой таблицей.

Что нужно знать об использовании индексов?

1. Длина ключа индекса не должна превышать 900 байт и 16 разных полей (это касается всех СУБД, кроме файловой).
2. Уровень фрагментации не должен быть выше 25%. В случае регулярного использования индексов может появиться эффект фрагментации. Поэтому чаще проводите дефрагментацию индексов MS SQL.
3. Отсутствие индексов. Из-за отсутствия индексов может произойти полное сканирование таблицы, результате чего появляются избыточные блокировки. Не рекомендуется запускать индексацию по маленьким наборам данных (таким, как «справочник организации»). Есть вероятность, что это приведет к противоположному эффекту – снижению быстродействия.

Вне сомнений, создание индексов в MS SQL – один из шагов на пути к оптимизации вашей базы данных. Однако прежде чем приступить оптимизации «1С», специалисту важно провести детальный анализ системы. Только после этого можно подобрать конкретную методику устранения ошибок и повышения производительности.

avm3110
20.02.2019, 18:54
Материал подготовил заместитель руководителя отдела программных разработок и поддержки компании «ГЭНДАЛЬФ» Николай Таранов

Индексы – это специальные ссылки, созданные для повышения производительности СУБД MS SQL. Как правило, они упорядочены по отдельным столбцам.
Создание индексов в MS SQL и «1С» помогает оперативно находить нужные данные в таблице. Кроме того, индексы способны повысить скорость выполненные запросов и снизить негативное влияние блокировок (прежде всего это касается многопользовательского режима).



Данная фраза из разряда "при повышении температуры пейте панадол", в принципе полезна, но только в очень ограниченных случаях, а в ряде случаях (например при аппендиците) - вредна:mad:

Индексы могут конечно повышать скорость выполнения запроса, а могут и нет (если по тем или иным причанам идет сканирование индекса). При записи индексы тратят ресурсы на индексирование и могут приводить к доп. блокировкам... И т.д. и т.п.

короче - учите матчасть комплексно, а не вырывайте те или иные цитаты из контекста :blush:

Наташа666
20.02.2019, 20:03
индексы это ужасно

Наташа666
20.02.2019, 20:03
понятно! давно не работала в мс скл. мы все как-то ближе в екселе