Управление индексами и секциями в 1С

06.02.12

Разработка - Механизмы платформы 1С

Одним из основных факторов производительности 1С: Предприятие 8 является верная структура индексов СУБД - это аксиома. Но также существует одно из заблуждений - что это все сложно.
В Ei разработан не имеющий аналогов инструмент позволяющий вывести работы с индексами и секциями на новый визуальный (интерактивный) уровень, позволяющий забыть о длинных инструкциях по созданию изменению индексов.

Инструмент по управлению индексами и секциями является эксклюзивным для решений на платформе 1С. А в контексте всех остальных решений просто редкостью (для секций автору известно только одно решение SqlPartitionManager  - $199 для одного сервера). SQL Server Management Studio не предоставляет возможности интерактивной работы с секциями и работа с индексами максимально неудобна.
Наверное многие скажут что инструменты эти не нужны можно все делать запросами. Возможность делать это запросами мною не отрицается, так же как и использование командной строки заместо проводника.

Данные инструменты дают следующие приемущества:

  • Простота настройки(добавления и редактирования);
  • Статистика в одном окне с редактируемыми объектами;
  • Отображение индексов и секций в виде дерева;
  • Контекст полей и типов 1С;
  • Секционирование на основе типов 1С ;
  • Drag & Drop. 

 Для чего вообще нужны секции?:

  1. Секции позволяют распределить нагрузку ввода вывода по всем дисковым массивам. Реализовывается через секционирование по периоду - когда данные за предыдущие периоды выносятся на файловые группы оптимизированные для только для чтения.
  2. Секции позоляют избежать блокировок. Реализовывается через секционирование по реквизиту разделителя - например Организация и как следствие в MSSQL 2008 Enterprise блокировка не будет эскалированна выше секции, т.е. одна организация будет полностью независима от другой.

 А теперь посмотрите как все это делается интерактивно


Для тех кто не знаком с Ei.

Enterprise Integrator - это инструмент для программистов и внедренцев, разработка которого непрерывно ведестя с 2006 года незавимой группой разработчиков. Ei можно использовать в платной и бесплатной реализации(с ограничениями).

Скачать установщик можно здесь. После установки запустить c:\Program Files\Enterprise Integrator\EI_82.epf или c:\Program Files\Enterprise Integrator\EI.epf

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.06.2024    7453    bayselonarrend    20    

154

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    5946    dsdred    16    

80

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    17673    YA_418728146    26    

71

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    11225    dsdred    44    

130

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    23762    SeiOkami    48    

135

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    18832    human_new    27    

80

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    14734    YA_418728146    7    

166
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Magister 134 17.11.11 14:35 Сейчас в теме
И работает это всё, как всегда, только для MsSQL? Или поддерживаются и другие СУБД?
2. German 413 17.11.11 14:37 Сейчас в теме
(1) Ну да... поддержка в других СУБД в планах ... но уж больно тяжело именно это сделать
3. iov 407 17.11.11 20:00 Сейчас в теме
(0) Вот еще бы пару ссылок на секционирование и вообще няшно бы было :)
5. iov 407 17.11.11 23:53 Сейчас в теме
(3) Пардон http://msdn.microsoft.com/ru-ru/library/ms188706.aspx на андроиде почему то ссылка не подсвечена оказалась.
4. smielka 246 17.11.11 23:27 Сейчас в теме
Спасибо очень удобный инструмент!
6. Ish_2 1112 18.11.11 09:22 Сейчас в теме
(0) Ничего не понял.
Грамотный SQL-щик , скажи мне, простому 1с-нику .
Мы что , используя твою обработку, устанавливаем ADO-соединение со своей же базой SQL ?
Затем вводим секции для физических таблиц (меняем характеристики базы)? И что потом ?
После выгрузки базы в .dt и последующей загрузке - мы потеряем всё секционирование ? Так ?
7. German 413 18.11.11 09:25 Сейчас в теме
(6) да соединение со своей же базой, или ее копией (главное чтобы структура метаданных была одинаковая)
конечно dt не сохраняет данную информацию... только бекап средствами SQL
8. Ish_2 1112 18.11.11 09:41 Сейчас в теме
(7) Еще вопрос.
У меня очень большая таблица (2 млрд записей). Хочу из нее , используя Group by, получить таблицу - 32 записи.
Мне поможет секционирование ?

И вопрос ,к теме неотносящийся.
В принципе возможно в MSSQL параллельно выполнить 32 запроса для получения каждой записи.
Например , послать 32 запроса :
select * from table where property = 1;
select * from table where property = 2;
........................
select * from table where property = 32;
ну и затем объединить их ,конечно,в одну.
9. German 413 18.11.11 09:55 Сейчас в теме
Ish_2 пишет:
Мне поможет секционирование ?

Нет тут достаточно только индекса. Если будет отбор тогда поможет.

ну и затем объединить их ,конечно,в одну.

Стоимость таких запросов будет высока очень.

Вот тут посмотри многое разъяснится http://www.sql.ru/articles/mssql/2005/073102PartitionedTablesAndIndexes.shtml#5
10. Ish_2 1112 18.11.11 10:10 Сейчас в теме
(9) Ммм.. Ага, высока не то слово.
За ссылку спасибо.
11. lustin 19.11.11 21:29 Сейчас в теме
(0) инструментарий действительно выглядит отлично - явно проделана огромная работа.

Однако вынужден заметить две вещи:

1. по индексам - практика показывает что необходимости управлять индексами на уровне СУБД нет: 1С в основном создает достаточные индексы. Опять же та же практика показывает что если движок рекомендует создать какие либо индексы, то исправлять это необходимо на стороне 1С. в 99 процентах появление рекомендуемых индексах связано с неверной архитектурой метаданных, неверно составленными запросами 1С, забытыми "галочками" индексировать у реквизитов и измерений и т.д.

2. с секционированием - по ссылке приведенной в (9) очень четко описан процесс создания, и опять же как показывает практика больше всего времени при секционировании уходит на обоснование и обдумывание: где расположить файловые группы, какую функцию секционирования создать и т.д. А вот когда план секционирования был полностью обдуман (включая план возврата секционирования при реструктуризации таблицы) время затраченное на написание скриптов было ничтожно мало.

и еще: когда база достигает размеров таких, что требуется задумываться о секционировании, сжатии, и анализа индексов таблиц - необходимо подумывать о выделенном DBA, а эти люди как известно используют SQL Managment Studio и ей им достаточно для выполнения их задач.
RustIG; hogik; German; Ish_2; +4 Ответить
12. German 413 19.11.11 21:38 Сейчас в теме
(11) Конечно инструмент не для DBA, они даже смотреть не будут, мировоззрение совсем другое.
Скорее для 1С стремящихся в выяснению и осознанию определенных проблем производительности MSSQL
13. Ish_2 1112 19.11.11 21:41 Сейчас в теме
(11) Согласен.
Узок, чрезвычайно узок круг потребителей продукта.
В базах до 50-70 Гб ( а это огромное подавляющее большинство , думаю 95% ) 1с-нику знать про секционирование не только ненужно , а даже вредно .
14. lustin 19.11.11 22:03 Сейчас в теме
(0) Но плюс то однозначным, забыл сразу поставить

(12) Кстати Герман - может попробуешь добавить функциональность поиска запроса вызвавшего рекомендацию о создании индекса, у меня получилось через XPath выражения к планам запросов. Думаю такая функциональность будет полезной для продукта.
15. German 413 19.11.11 22:10 Сейчас в теме
(14) план запроса и связанные с ним фишки уже на подходе. не переключайтесь
(13) секции это не всегда следствие огромных баз.. у меня была ситуация когда секционирование применялось для увеличения параллельности работы
16. Mudrii_Gankster 21.11.11 12:27 Сейчас в теме
спасибо за информацию буду изучать эту тему
17. opiumdx 23.11.11 07:41 Сейчас в теме
Спасибо, интересно было посмотреть.
18. Aleskey_K 35 30.11.11 10:59 Сейчас в теме
Спасибо автору и комментаторам за полезную информацию.
19. B2B 274 30.11.11 15:30 Сейчас в теме
Интересная тема, не знал, что такое возможно. К автору видео: говорить в микрофон можно и погромче (и поувереннее), либо нормализовывать звуковую дорожку перед выкладыванием видео
20. German 413 30.11.11 16:48 Сейчас в теме
(19) я там вначале что то "застеснялся", потом веселее становится :)
21. Natalex95 20.01.12 13:48 Сейчас в теме
Скачал, решил поэкспериментировать с секционированием, но что то не получается...
После настройки соединения высвечивается надпись "Свойства объектов доступны только для версии MSSQL 2005 и выше"
Хотя у меня стоит mssql2008, что я могу делать не так? может существуют какие-то тонкости?
Версия 1С 8.2.13.205
22. German 413 20.01.12 14:00 Сейчас в теме
23. Natalex95 23.01.12 08:01 Сейчас в теме
А как купить лицензию, что то с сайта переадресовывает на http://infostart.ru/public/14635/index.php?action=buy&id=79875. Где написано, что цена на продукт не определена, и в корзину не добавляется.
И вообще интересует вопрос, как это будет выглядеть, по доставке.
24. German 413 23.01.12 11:29 Сейчас в теме
(23) Ошибка на IS была уже исправили.
По доставке: после получения IS денег на РС сразу же EMS`ом отправляется ключ (~ 3 дня в Москву 7 по России), стоимость доставки входит в цену Ei. Потом в конце месяца получаете документы от IS. Все.
25. пользователь 25.01.12 10:09
Сообщение было скрыто модератором.
...
26. svbel85 61 06.02.12 15:18 Сейчас в теме
а почему пишет что доступна только для скл 2005, при попытке установки соединения??
27. German 413 06.02.12 15:20 Сейчас в теме
28. ulili 04.05.12 12:47 Сейчас в теме
29. zavedeev 14.05.12 13:22 Сейчас в теме
30. oleshko_alexey 2 17.04.13 14:48 Сейчас в теме
СпасибО!

Осталось разобраться как это богатство использовать...
31. zoytsa 29.01.15 13:23 Сейчас в теме
1C при создании наборов записей регистров, подчиненных регистратору,
при записи документа делается SELECT с отбором по регистратору. Есть ли возможность осуществить "partition elimination" в данном случае - чтобы при чтении таблицы документов использовался только раздел, соответствующий, а не шло чтение всех секций?

Возможно ли секционирование по регистратору?
32. zoytsa 31.01.15 10:45 Сейчас в теме
Ауу, ребят, кто секционривал большие базы - сталкивались ли с зависаниями при проведении/отмене проведения? Как решали проблему partition elimination - т.к. отбор в запросах SQL идет в данных операциях по регистратору, а не по периоду?
33. German 413 01.02.15 11:50 Сейчас в теме
(32) zoytsa, с зависаниями не сталкивался.
Оставьте свое сообщение