Технология In-Memory OLTP (для SQL Server 2014)

Публикация № 536467

Администрирование - Администрирование данных 1С

62
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2015 CONNECTION 15-17 октября 2015 года. Мой доклад, в свою очередь, стал результатом почти четырех месячных исследований в отрыве от какой-либо работы. Но «игра стоила свеч», и когда я получил свои результаты, я захотел поделиться ими с сообществом.

Началось все с одной истории, которая три года назад случилась в моей профессиональной карьере, когда я работал в Киргизии, в компании, которая представляла собой сеть розничных магазинов. Тогда у меня произошел разговор с моим директором по IT, который сказал: «Денис, у нас одна из важных, критичных операций – это проведение документа «Чек» на кассах. Как мы можем максимально ускорить этот процесс, распараллелить его, при этом получая оперативные остатки?»

Сразу скажу, что у нас на тот момент использовалась платформа 8.1 и автоматические блокировки. И я тогда ему ответил, что да, мы можем перейти на управляемые блокировки и распараллелить этот процесс на уровне номенклатуры. На что он мне задал естественный вопрос: «а что произойдет, если у нас на нескольких кассах одновременно будет проводиться одна и та же номенклатура?» Тогда я на этот вопрос какого-то внятного ответа дать не смог, но надеюсь, сейчас у меня это получится.

Тренды развития аппаратного обеспечения

Если мы посмотрим на развитие индустрии IT за последние несколько лет, мы увидим определенные тренды в аппаратном обеспечении:

  • Первый тренд касается памяти. Ни для кого не новость, что память со временем дешевеет, и на данный момент мы уже можем получить достаточно большой объем памяти за сравнительно небольшие деньги.
  • Второй тренд – по процессорам. Всем известно соответствие роста производительности, потребляемой мощности и выделяемой температуры процессоров по закону Мура. В определенный момент это соответствие на уровне одного ядра закончилось (сейчас у нас одно ядро уже долгое время не может выполнять одну простую операцию быстрее, чем раньше), но оно продолжилось на уровне многих ядер (многоядерных процессоров). Поэтому все наши надежды и помыслы идут в область параллельных вычислений, и мы, как разработчики и архитекторы СУБД, для повышения производительности наших приложений должны планировать в них параллельность работы.

Тренды развития бизнес-приложений

А что в это время происходит на уровне бизнеса? Мы наблюдаем: все большее количество пользователей, которые используют все большее количество устройств, на которых выполняется все большее количество программ, и все это в свою очередь генерирует все большее количество данных.

При этом большинство из этих процессов поддерживаются облаками.

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

Облака и мобильность всегда были связаны между собой, и именно от взаимодействия этих двух сущностей мы в будущем сможем получать какие-то прорывы. Такое взаимодействие привело к появлению известной на Западе стратегии: Mobile-First – Cloud-First (изначально мобильное и изначально облачное).

Индустрия IT всегда менялась, и сейчас меняется, испытывает трансформацию. И в этом мире, изначально мобильном и изначально облачном, непрерывно возрастает темп формирования этих данных, и рост этот – экспоненциальный. Исходя из этого возникает проблема сохранения, накопления и актуализации информации, которая со все возрастающей скоростью попадает в наши системы.

Соответственно, возникает потребность в специальных технологиях. И, если касаться конкретно In-memory OLTP, то это – всего лишь одна из многих технологий, призванных на данный момент обеспечить дальнейшее развитие IT-индустрии.

Технология In-memory OLTP

Почему появилась технология In-memory OLTP? И почему она важна?

  • Дело в том, что бизнес предъявляет все большие требования:
    • к всевозрастающей пропускной способности:
    • к ожидаемому OLTP процессу с прогнозируемой скоростью и минимальными задержками и за небольшие деньги.
  • В свою очередь аппаратное обеспечение предъявляет требования к реляционным базам данных, чтобы они соответствовали последним изменениям в архитектуре аппаратного обеспечения.

Соответственно, In-memory OLTP  – это: высокопроизводительный механизм, который отвечает современному аппаратному обеспечению и максимально оптимизирован для работы с памятью.

И, что самое важное, In-memory OLTP – это не какой-то отдельный продукт (не какая-то отдельная лицензия, за которую нужно платить). Начиная с SQL Server 2014 In-memory OLTP – это часть ядра этого продукта, которая доступна в рамках редакции Enterprise.

Здесь вы видите три основных компонента, которые представляют собой технологию In-memory OLTP. Именно они позволяют ей осуществить такой прорывной эффект:

  • Первое – это четкая установка на то, что все данные находятся в памяти.
  • Второе, что немаловажно: эти данные располагаются в специально разработанных, свободных от блокировок структурах данных.
  • И третье – это нативная, родная компиляция. Она представляет собой хранимые процедуры, содержащие бизнес-логику, которые скомпилированы в машинный код в памяти SQL-сервера.

Сравнение инфраструктуры взаимодействия (традиционной схемы и In-Memory OLTP)

Если мы посмотрим традиционную схему взаимодействия клиента и СУБД, то тут все очевидно:

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

В случае применения схемы In-Memory OLTP в рамках платформы 1С, схема чуть-чуть меняется:

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

Яркий пример того, как физический слой «протек» на слой логический.

Основное преимущество In-Memory OLTP

Здесь на слайде перечислены некоторые основные характеристики технологии In-Memory OLTP. Более подробно об этом можно прочитать в интернете (в основном, на сайте Microsoft, а также в большом количестве блогов западных разработчиков). Здесь же я хочу уточнить один нюанс, о котором я еще не говорил: в In-memory OLTP появился совершенно новый мультиверсионный оптимистичный контроль параллельного выполнения. В его рамках полностью отсутствует какое-либо понятие блокировок при работе с данными. При его работе конфликты между различными потоками редки, но если они и случаются, то быстро решаются, и не нужно очень долго ждать, как в случае использования стандартного блокировочного механизма.

Тестовый сценарий для проверки работы технологии In-Memory OLTP в рамках платформы 1С

Анализируя те возможности, которые дает технология In-memory OLTP, я решил реализовать достаточно простой тестовый сценарий для проверки работы этой технологии в рамках платформы 1С. Демонстрационная среда, которая у меня получилась в результате, выглядела следующим образом:

  • Я взял очень простую конфигурацию с одним регистром накопления, в котором учитывались остатки по номенклатуре в разрезе количества.
  • Также в этой конфигурации было два документа – Приход и Расход, в которых была реализована следующая бизнес-логика:
    • Документ Приход обеспечивал поддержку минимального остатка.
    • А при проведении документа Расход контролировалось отсутствие нулевых остатков.
  • Для того чтобы сымитировать конкурентную многопоточную нагрузку при проведении этих документов, я использовал стандартный подход с фоновыми процессами, которых для проведения документа Расход было подавляющее большинство.
  • Также следует отметить, что я в своей демонстрационной сети использовал две виртуальные машины:
    • Одну – для сервера 1С:Предприятие,
    • А другую – для SQL-сервера.

Но обе виртуальные машины находились в рамках одного хоста виртуализации.

Первый замер – базовый показатель

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

На слайде подчеркнуто значение того показателя, который я получил: 120 документов в секунду при 64 фоновых процессах – это тот базовый показатель, который у меня был.

При этом была измерена нагрузка на процессоры:

  • Сверху – нагрузка на сервер 1С:Предприятие
  • И нижняя часть – это нагрузка на процессоры SQL-сервера.

Как вы видите, и там, и там нагрузка небольшая – процессоры отдыхают, работают только управляемые блокировки.

Второй замер – миграция в In-Memory только таблиц

Следующим шагом я решил сделать миграцию структур, в которых хранились стандартные данные, в In-memory-таблицы. И после того, как я их мигрировал, я запустил свой стандартный тест. В нем происходило все то же самое: средствами платформы 1С проводились документы, но только теперь они уже хранились в In-Memory-таблицах (сама платформа об этом не знала).

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

Хочу добавить к этому, что если кто пытался реализовать эту же задачу, то обычно она вызывает проблемы – чуть позже я расскажу, как эти проблемы решаются.

Третий замер – миграция в In-Memory и таблиц, и бизнес-логики

На третьем шаге помимо того, что была полностью реализована миграция структур данных в In-memory-таблицы, также была полностью смигрирована и та бизнес-логика, которая была нужна для проведения документов – все действия, необходимые для:

  • Формирования документов и их табличных частей;
  • Их записи;
  • Формирования движений документов;
  • И изменения текущих остатков.

В итоге был получен результат 250 документов в секунду. По сути, по отношению к базовому показателю 120 и 250 – это выигрыш чуть больше, чем в два раза.

Тут можно немного посмеяться и сказать, что мы же можем взять железо в два раза мощнее и получить примерно тот же результат. Но все объясняется, если посмотреть на загрузку процессоров в этом случае:

  • Сервер 1С:Предприятия полностью загружен;
  • В то время как сервер SQL занят только на треть.

Мне удалось выяснить, что данная нагрузка на сервер 1С:Предприятие показывала, что он просто не успевал сгенерировать это количество документов на лету, а также не успевал их отдавать на проведение SQL-серверу, чтобы полностью его загрузить.

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

Четвертый замер – передача 15 документов для проведения за один вызов

Четвертый замер я сделал в надежде на то, что удастся все-таки за один сетевой вызов отдавать на SQL-сервер побольше работы. Для этого бизнес-логика была переписана таким образом, чтобы за один вызов отдавать на проведение сразу 15 документов. В результате скорость выросла до 550 документов в секунду.

При этом, как видно на графиках, сервер 1С:Предприятие был все так же полностью загружен, а SQL-сервер продолжал «отдыхать».

По сути, этот сценарий скорее фейковый, потому что он вообще не имеет никакой практической пользы, и был реализован только в качестве проверки. Но в любом случае мы явно видим проблему переноса достаточной нагрузки на SQL-сервер, чтобы полностью его загрузить.

Пятый замер – запуск подготовленной нагрузки на стороне SQL Server

Следующим шагом я решил сгенерировать всю нагрузку предварительно. Эта нагрузка выглядела в виде 64 сформированных файлов SQL-скриптов на 700 мегабайт. Я перенес их на SQL-сервер, и с помощью известной утилиты OStress, которой можно «скормить» эти файлы, чтобы запустить параллельную нагрузку, получил следующий результат.

  • По загрузке процессора – получившееся время отработки поместилось в стандартное окошко диспетчера задач: есть начало нагрузки, потом полностью все процессоры почти на 100% отработали, и нагрузка закончилась.
  • В результате нагрузки было создано 112 тысяч документов, при этом полностью сохранялись все те процессы, которые были при проведении документов «Расход»: контролировались все остатки, выполнялись все действия.
  • Нагрузка заняла 53 с лишним секунды.
  • Если сделать определенные вычисления, получится, что среднее время проведения одного документа составило менее половины миллисекунды,
  • а средняя скорость проведения документов составила больше 2000 документов в секунду.

Когда я первый раз получил этот результат – не мог поверить. Просто представьте себе, какие объемы вам теперь доступны, вы теперь можете мыслить в совсем других категориях. И теперь я могу ответить своему бывшему директору по IT, как мы можем ускорить проведение документов «Чек» на кассах. И даже если при этом у нас будут какие-то конфликты, блокировки, сам процесс теперь пройдет очень быстро.

Методология миграции

Если же вернуться к методологии миграции в In-Memory OLTP, то надо отметить, что она подходит не для всех случаев. Ее надо использовать только для некоторых узких мест вашей системы, где важен гарантированно быстрый доступ к данным. Поэтому прежде, чем внедрять эту технологию, нужно провести тщательный анализ:

  • Например, если сравнить стеки выполнения (традиционный и In-Memory OLTP), то на уровне сетевого взаимодействия ничего не поменялось. Поэтому, если ваша программа (ваше приложение) очень «разговорчивое», обменивается с сервером СУБД очень большим количеством сообщений, то вам технология In-Memory совсем не поможет – здесь нет никаких улучшений.
  • Также, если мы посмотрим на уровень журнала регистрации базы данных, то тут тоже особо ничего не поменялось. Хотя размер журнала регистрации при операциях In-memory OLTP сокращается, минимальная задержка транзакций при записи в этот журнал остается той же.
  • Основную выгоду вы сможете получить только на уровне выполнения запросов и доступа к данным.

Преимущество технологии In-memory OLTP не в том, что данные располагаются в памяти. Хотя технология и называется In-memory, выигрыш происходит не от этого – ускорение происходит за счет того, что меняется инфраструктура самой базы данных:

  • используются новые, специально разработанные структуры данных, которые лишены блокировок,
  • а также используются скомпилированные в машинные коды хранимые процедуры, которые хранят вашу критичную бизнес-логику.

И, если мы посмотрим на стандартную систему, то в случае добавления в нее большого количества потоков, они со временем начинают друг другу мешать, тем самым пропускная способность вашей системы уменьшается. В то же время при использовании технологии In-memory OLTP система при увеличении количества пользователей продолжает масштабироваться, поскольку нет блокировок (используются новые структуры данных, которые их лишены), а также применяются быстрые, предварительно скомпилированные хранимые процедуры.

Что можно сказать по поводу самого процесса миграции в In-memory? Он в целом состоит из двух шагов, которые поочередно повторяются:

  • Первый шаг – это миграция структур данных.
  • И второй шаг – это миграция вашей критичной бизнес-логики на сторону СУБД.

Решение проблемы записи в In-Memory из 1С

При работе из 1С с мигрированными на сторону СУБД  структурами данных возможны некоторые трудности. Например, если при смигрированных таблицах в рамках платформы 1С кто-либо попытается осуществить какую-то запись в таблицы либо в документы (Приход или Расход), вы увидите стандартное сообщение об ошибке, которое в целом говорит о каких-то проблемах в уровнях изоляции.

С чем связана такая ошибка? Стандартная схема выполнения поддерживает пять уровней изоляции, а механизм In-memory OLTP – только три уровня. При этом платформа 1С по умолчанию использует уровень изоляции ReadCommited, которому как раз нет соответствия в механизме In-Memory OLTP. Соответственно, возникает проблема согласованности между этими уровнями изоляции.

Пытаясь решить эту задачу, я потратил очень много времени. И поиск решения даже завел меня в реверс-инжиниринг («обратный инжиниринг»), мне казалось, что придется динамически перехватывать запросы, которые идут от платформы к СУБД, и изменять их текст на лету для того, чтобы они стали соответствовать синтаксису In-Memory. Но оказалось, что решение находится на поверхности – оно тривиальное и простое.

В самом SQL Server 2014, в котором как раз и появилась технология In-Memory, есть такое свойство базы данных, как is_memory_optimized_elevate_to_snapshot_on. По умолчанию, оно неактивно, выключено – это можно проверить запросом, который показан на слайде.

Соответственно, если вы выполните команду, которая активирует это свойство, то проблем с согласованностью уровней изоляции у вас не будет.

При этом вы поднимете уровень изоляции, который СУБД использует по умолчанию, и он как раз будет соответствовать уровню изоляции Snapshot, по умолчанию использующийся для таблиц In-Memory. Таким образом, проведя небольшие манипуляции на стороне СУБД, у вас в In-Memory-таблицы будут записываться любые документы и любые данные.

Общая схема миграции бизнес-логики на сторону СУБД

Что же можно сказать по поводу общей схемы миграции самой бизнес-логики на сторону СУБД?

Она включает в себя два объекта:

  • Во-первых, это та скомпилированная процедура, которая будет выполнять непосредственную работу.
  • И над ней обертка, которая реализует так называемую RetryLogic (логику перезапуска). Почему? Потому что нет никакой гарантии того, что ваша хранимая процедура выполнится. В процессе ее выполнения может произойти какой-то конфликт, поэтому необходимо сделать так, чтобы в результате конкретного сетевого вызова эта процедура, реализующая вашу бизнес-логику, обязательно выполнилась до конца.

Вот примерная схема реализация «обертки». Здесь AddOutcome – это внешний StandardT-SQL-(обертка). Внутри цикла располагается процедура, уже непосредственно скомпилированная в машинные коды. Видно блок TRY (Retry). Соответственно, если возникает конфликт, то происходит исключение, в котором вы, как разработчик, закладываете какой-то период ожидания, чтобы конфликтующая транзакция успела выполниться, а затем, соответственно, выполнится ваша.

Заключение

Ну и в заключение можно сказать, что миграция в таблицы In-Memory OLTPприменительно к 1С потребует задействовать:

  • Большое количество интеллектуальных и финансовых ресурсов,
  • Подключение большого количества специалистов.
  • Ну и самый основной вопрос – это то, что поддержка технологии In-Memory OLTP на данный момент в платформе отсутствует, и в этом плане можно только смотреть в сторону фирмы 1С. По крайней мере, я надеюсь, что они хорошо отреагируют на появление возможности использования этой технологии в рамках платформы.

*****************

Приглашаем вас на новую конференцию INFOSTART EVENT 2019 INCEPTION.

62

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. speshuric 1120 20.09.16 13:12 Сейчас в теме
Не применительно к 1С, а вообще, моё ИМХО. InMemory OLTP пока слишком хлопотная и молодая техника, которую имеет смысл применять ОЧЕНЬ точечно: а) она "плывёт" пока от версии к версии, слишком много ограничений, слишком много специфики.
Зато Delayed Transaction Durability может существенно помочь (если есть возможность принять соответствующие риски). Плюс в том, что можно обойтись вообще без изменений логики. Если у вас основные тормоза на WRITELOG и они не устранимы переконфигурированием структуры хранения, если при этом потеря последних нескольких транзакций несущественна (например, есть возможность снова их прокрутить/перепровести/перезагрузить или бизнес принимает риск потери данных при полном отказе сервера в пару минут - на самом деле для относительно небольших систем это типично). То в этих условиях Delayed Transaction Durability может дать хороший прирост, а главное, без увеличения стоимости сопровождения и без дополнительной разработки. Но, конечно, это не 30-100 раз, как InMemory OLTP.
2. МихаилМ 20.09.16 16:10 Сейчас в теме
1с индустрии проблема квалифицированных кадров. всегда 1 вопрос: @а кто будет поддерживать это чудо когда, когда уйдет мега гений".
3. speshuric 1120 20.09.16 20:42 Сейчас в теме
(2) Именно в InMemory OLTP вопрос даже не в этом. 1С для своих таблиц не предполагает и не поддерживает использование in memory. Как минимум из этого следует необходимость работы прямыми запросами, сложности при реструктуризации и вообще геморрой с обслуживанием и хождение по граблям. Для этих таблиц и native compiled процедур есть гора ограничений:
  • Редакция SQL - Enterprise 64-bit (для 20-ядерного сервера это порядка 7 млн руб).
  • Куча неподдерживаемых моментов со стороны SQL: https://msdn.microsoft.com/en-us/library/dn246937(v=sql.130).aspx
  • В том числе нет кластеризованных индексов (не нужны). Первичный ключ только в виде хэш-индекса. Это достаточно специфичная штука. Уникальных индексов нет (по крайней мере в 2014).
  • Жёсткие требования по памяти (снизу - объём таблиц, сверху - 250 ГБ) и требование удвоенного дискового пространства. https://msdn.microsoft.com/en-us/library/dn170449(v=sql.130).aspx
  • И еще куча всего, можно начать читать тут: https://www.brentozar.com/blitz/hekaton-memory-oltp-tables-use/
В общем, если решение не на 1С и есть пара таблиц, которые направшиваются (явное продиагностированное узкое место, которое лечится in-memory OLTP), область общения с этими таблицами ограничена и есть вменяемый DBA, то можно использовать (особенно для промежуточных расчетов).
Короче, мощная, но капризная высокоточная снайперская винтовка, требующая высококлассных специалистов и немалых затрат на обслуживание.
Незаменима для определённого класса задач (например обработка более 1000 событий в секунду и онлайн-аналитика по ним), но для 1С как-то слишком хлопотно.

С другой стороны - за темой in-memory реально будущее. MS SQL Server, SAP Hana, Oracle Database In-Memory - все они прорабатывают эту тему. В in-memory существенно отличаются подходы к обработке данных по сравнению с классическими "дисковыми" РСУБД (активное использование хэш-индексов, колоночных индексов), к обеспечению ACID. До вендоров коробочных массовых решений это доползет лишь через несколько лет.
ustinov_greendale; hulio; +2 Ответить
7. logarifm 1048 22.09.16 11:28 Сейчас в теме
(3) speshuric, еще забыл уточнить, прямые запросе ВНЕ 1С это нарушение лицензионного соглашения целестности данных.
8. IB0P0HI 22.09.16 16:16 Сейчас в теме
(7) logarifm,
Запросы только на запись? Если дамп или копирования таблицы типа справочника(ну пусть номенклатура) в свою сторонню БД средствами SQL сервера не думаю что нарушил. Тут идет чтение и права на уровне БД(потому как то же самое можно регламентным заданием сделать - но увы на больших табличка SQL нативный будет в разы шустрее.

9. genayo 23.09.16 12:01 Сейчас в теме
(7) Есть хотябы один пример, когда за это у нарушителей были хоть малейшие проблемы с 1С?
11. МихаилМ 27.09.16 12:30 Сейчас в теме
(9) genayo, есть один.
были у софтпоинта проблемы с 1с.
4. Sybr 235 21.09.16 09:32 Сейчас в теме
Из статьи я так и не понял, как выглядит работа с OLTP базой со стороны 1С, нужно подключаться напрямую через ADO и получать данные нативными SQL запросами?
5. bulpi 157 21.09.16 12:29 Сейчас в теме
"Горе от ума" (с) Грибоедов.
Написать толковую конфигурацию вместо типовой не пробовали ? Ну хоть раз в жизни ?
6. logarifm 1048 22.09.16 11:23 Сейчас в теме
Очень много безмысленных картинок, Тренды шменды. еле дочитал!
BigB; ustinov_greendale; swimdog; Sheff; +4 Ответить
10. Sheff 26.09.16 16:04 Сейчас в теме
12. mrstomak 403 04.10.16 10:48 Сейчас в теме
Статья вызвала удивление.
Если мы переносим бизнес-логику на SQL-сервер, то мы вообще-то теряем те самые управляемые блокировки платформы, т.к. они реализованы на уровне сервера приложений.
Потому что бизнес-логика в ряде мест не укладывается в пресловутый Read Committed.

Описанное преимущество "мультиверсионности" и отсутствия необходимости в блокировках не выдерживает критики - СУБД-версионники существуют десятки лет, Read Committed Snapshot для MS SQL поддерживается начиная с 8.3, но когда ты контролируешь остатки, распределяешь партии или взаиморасчеты, концепция "версий" не обеспечивает целостности данных, т.к. недопустимо, чтобы каждый поток видел свою "версию" остатков - здесь бизнес-логика требует видеть реальный остаток именно сейчас. Именно для этого и используются управляемые блокировки, "дополняющие" используемый уровень изоляции СУБД (Да даже в автоматическом режиме с Serializable на регистрах нужно было хинтить for update!).

Показанные замеры с переносом логики в ХП SQL не имеют смысла, если потеряна поддержка управляемых блокировок - потому что очевидно, что при контроле остатков, задержка была именно в ожидании установки блокировки!

Не совсем ясно, как вообще выполняются ХП? откуда берется код? Вот платформа проверяет наличие записей в регистре, проверяет его настройки по метаданным, пишет со сплиттером или без, с учетом разделителя данных в multitanancy и в определенном порядке, добавляет условия RLS,обновляет таблицу итогов - это всё помимо управляемых блокировок. Неужто всё это перенесено на уровень SQL и учтено в замерах?

Ответ на вопрос "директора" есть на ИТС, ИС, Мисте, где угодно, странно видеть это основанием к подобному исследованию.
13. starik-2005 1959 27.10.16 14:33 Сейчас в теме
Смысл статьи в том, что нужно отказаться от 1С в плане реализации бизнес-логики и написать ее на чем-нибудь вменяемом, а в 1С реализовать выгрузку для отчетности регуляторам и, возможно, ведение операций банка и кассы.

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

См. также

Установка 1С Сервера взаимодействия на Linux 22

Статья Системный администратор Нет файла Россия Linux Бесплатно (free) Администрирование данных 1С

В статье описан пошаговый процесс установки Сервера взаимодействия 1C на Linux CentOS 7.6.

06.09.2019    1607    KlSergey    14       

1С + PostgreSQL + SSD: Куда уходит ресурс хост-записей? 33

Статья Системный администратор Нет файла Россия Windows Бесплатно (free) Администрирование данных 1С

Работа PostgreSQL на SSD начиная с 10 версии, резко увеличивает нагрузку на ресурс SSD, даже когда к базе нет коннектов.

06.09.2019    3855    2tvad    6       

О Unit-тестах замолвите слово.Часть 1 23

Статья Программист Нет файла Бесплатно (free) Тестирование и исправление

Последнее время в контексте 1С очень много говорят о функциональном тестировании, BDD. А Unit-тестирование обходят стороной. Попробуем разобраться, для чего Unit-тестирование применять стоит.

22.07.2019    2281    Сурикат    27       

Обновление PostgreSQL на Windows 25

Статья Системный администратор Нет файла Windows Бесплатно (free) Администрирование данных 1С

Указана последовательность действий при обновлении PostgreSQL на примере Windows. Также описаны некоторые особенности.

11.06.2019    4395    extalionos    4       

Вопросы и ответы по лицензированию Microsoft Windows 17

Статья Системный администратор Пользователь Нет файла Россия Бесплатно (free) Администрирование данных 1С

То, что интересует покупателей настольной операционной системы Microsoft.

20.05.2019    4434    accounting_cons    3       

Регулярная перезагрузка Сервера 1С с чисткой кэша 45

Статья Системный администратор Нет файла Windows Бесплатно (free) Администрирование данных 1С Стартеры 1С

Батник для перезагрузки агента сервера 1С и чистки серверного кэша и сеансовых данных. Для регулярной перезагрузки вставляем в планировщик заданий Windows.

17.05.2019    5240    alfir70    19       

Способы проверки доступности TCP-портов 42

Статья Системный администратор Нет файла Windows Бесплатно (free) Администрирование данных 1С

Как проверить доступен ли порт сервера? Или внешний веб-сервис? Приведены несколько способов для использования на Windows-системах.

12.05.2019    5973    -vito-    7       

PID процесса в сборщиках PerfMon 8

Статья Системный администратор Нет файла Россия Windows Бесплатно (free) Администрирование данных 1С

Одним из неудобств при работе с PerfMon является то, что одноименные процессы именуются по-порядку, с добавлением суффикса #n к имени процесса. Описана настройка, позволяющая устранить этот недостаток.

06.04.2019    1882    -vito-    9       

Введение в лицензирование ПО Microsoft 15

Статья Системный администратор Пользователь Нет файла Россия Бесплатно (free) Администрирование данных 1С

Поговорим о принципах лицензирования программных продуктов Microsoft.

19.03.2019    6944    accounting_cons    37       

Вопросы и ответы по лицензированию Microsoft SQL Server 21

Статья Системный администратор Нет файла Россия Бесплатно (free) Администрирование данных 1С

Продолжение темы лицензирования серверных продуктов Microsoft.

26.02.2019    9253    accounting_cons    30       

Собираем бюджетный игровой компьютер core i7 для Программиста 1С из всякого хлама за 20 тысяч рублей 6

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С

В продолжение статьи со сборкой бюджетного сервера так же решил написать про свой комп. С бюджетом 20 тыс. рублей.

29.01.2019    7141    ogidni    126       

Собираем бюджетный б/у сервер 1С:Предприятия 8.3 на 250+ Пользователей за 100 тыс. рублей 31

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

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

24.01.2019    10835    ogidni    136       

Установка Windows без загрузочной флэшки и загрузочного DVD-диска 28

Статья Системный администратор Нет файла Windows Бесплатно (free) Администрирование данных 1С

Что делать, если нужно установить Windows на ПЭВМ со старой системной платой, а под рукой нет dvd-привода, а с флэшки загрузка невозможна или идет очень медленно.

09.01.2019    4055    independ    4       

Семь рекомендуемых бесплатных курсов Microsoft для ИТ-администраторов 31

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Образовательный портал «Нетология» предлагает вам пройти семь онлайн-курсов по облачным сервисам Microsoft бесплатно и получить сертификат об их завершении. Все курсы основаны на самых популярных сценариях использования облачных технологий в компаниях малого и среднего бизнеса. Разберемся, что же эти учебные программы предлагают.

28.12.2018    10128    VKuser24342747    1       

Ректальное администрирование: Основы для практикующих системных АДминистраторов 30

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Одной из самых популярных и зарекомендовавших себя методологий системного администрирования является так называемое ректальное. Редкий случай сопровождения и обслуживания информационных систем, инфраструктуры организации обходится без его использования. Зачастую без знания данной методологии сисадминам даже бывает сложно найти работу в сфере ИТ, потому что работодатели, особенно всякие аутсорсинговые ИТ фирмы, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям: практикам ITIL, нормальным ITSM и прочей ерунде.

22.12.2018    11168    Jokemas    25       

Исследование использования СУБД (MS SQL, PostgreSQL, Oracle, IBM DB2) с отраслевыми конфигурациями на платформе 1С:Предприятие 14

Исследование no Нет файла Россия Бесплатно (free) Администрирование данных 1С

Инфостарт подводит предварительные итоги третьего опроса по системам управления БД, которые используют участники Сообщества для автоматизации на платформе 1С, и анализирует тенденции рынка.

20.12.2018    6318    Kochergov    13       

1С Батл: PostgreSQL 9,10 vs MS SQL 2016 150

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С

PostgreSQL не так давно появился на российском рынке, поэтому у многих специалистов появляются сомнения, насколько удобно с ним работать, учитывая специфику 1С. Антон Дорошкевич, руководитель IT-отдела и направления оптимизации 1С компании «ИнфоСофт» (г. Новосибирск), рассказал о своем опыте применения этой СУБД. Тема его доклада звучала провокационно: «1С-батл между MS SQL 2016 и PostgreSQL версии 9 и версии 10».

18.12.2018    33484    a.doroshkevich    153       

Как включить RemoteApp на Windows 10 Professional. Инструкция 76

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С

Всем наверно знакомо, что Professional выпуск Windows позволяет использовать режим удаленного рабочего стола. Но мало кому известно, что есть возможность настроить и режим «RemoteApp» знакомый нам по серверным продуктам. То есть клиенту будет доставляться не весь рабочий стол, а лишь приложение, например, 1С.

16.12.2018    16987    Aleksey81    29       

Как в RDP избавиться от языковой раскладки и оставить только выбор языка 82

Статья Системный администратор Нет файла Windows Бесплатно (free) Администрирование данных 1С

До чего же бывает трудно, когда в терминальной сессии работает выбор как языка ввода, так и языковой раскладки. Раздражает ведь??? Решение есть, и весьма простое!

14.12.2018    8693    Aleksey81    40       

Postgres Pro для 1С: что нового 74

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С

Postgres становится все популярнее, но специалисты 1С все равно немного побаиваются этой системы управления базами данных. Почему стоит решиться и попробовать эту СУБД – на конференции INFOSTART EVENT 2018 рассказал сооснователь и генеральный директор компании Postgres Professional Олег Бартунов.

10.12.2018    19723    user1068014    98       

Восстанавливаем ассоциацию типов файлов 1С 8

Статья Системный администратор Программист Нет файла Windows Бесплатно (free) Администрирование данных 1С

По случайности или неосторожности бывает так, что меняется ассоциация файлов 1С (относится ко всем типам файлов, здесь же разбирается пример для файла 1С), и потом очень неудобно становится ориентироваться по файлам 1С или даже смотреть на такое безобразие. В этой статье я кратко на своем примере расскажу Вам, как исправить подобные ситуации.

18.11.2018    2570    osa92    2       

Измерь его правильно! Краткое описание общепринятого метода оценки производительности DB серверов 55

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Сообщество программистов (администраторов) 1С является одним из самых замкнутых на себя. Тот же JAVA senior без особых вопросов напишет код на PHP или на Python, если этого потребует обстановка. 1Сники же и powershell и bash и PHP и все остальное с разной степенью успешности реализуют на 1С. В последнее время ситуация немного меняется, классическое высшее образование программистов уже не ограничивается ассемблером, бейсиком и фортраном. Никто не падает в обморок при виде class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } Попробуем покуситься на тест Гилева © и узнать, как без него обходятся DBA админы остального мира, слабонервных прошу удалиться, остальных прошу под кат...

28.10.2018    8077    capitan    137       

Как подружить 1С и Power BI: личный опыт визуализации управленческих данных 113

Статья no Нет файла Россия Windows Бесплатно (free) Администрирование данных 1С

Аналитика для предприятия – это, скорее, необходимость, чем роскошь. Визуальное представление данных позволяет оперативно принимать и оценивать управленческие и коммерческие решения. Так, Microsoft Power BI является прекрасной платформой для построения динамических и интерактивных отчетов. В статье рассмотрен вариант подключения 1С в качестве источника данных через OData.

04.10.2018    19208    zhogov    55       

Автоматизация тестирования 82

Статья Программист Нет файла Бесплатно (free) Тестирование и исправление

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

04.10.2018    7359    ivanov660    23       

Как обеспечить резервирование 1С с минимальным временем на восстановление 42

Статья Системный администратор Нет файла Россия Бесплатно (free) Администрирование данных 1С

Резервирование 1С является важным фактором для защиты данных и снижения рисков их потери для любого предприятия. В этой статье мы поделимся опытом, как обеспечить резервирование 1С с минимальным временем на восстановление.

11.09.2018    7970    zhogov    32       

Организация виртуальной инфраструктуры 1С в Microsoft Azure 55

Статья Системный администратор Программист Нет файла Россия Windows Бесплатно (free) Администрирование данных 1С

В последнее время тема облачных сервисов становится все более популярной не только в сегменте частных пользователей. Облака находят практическое применение в бизнесе, например, для размещения 1С, и уже пользуются высоким спросом. Предлагаю вам наш опыт по организации виртуальной инфраструктуры 1С в Microsoft Azure.

04.09.2018    11484    zhogov    86       

Решение практической задачи в администрировании 1С используя веб приложение для Linux (Продолжение) 9

Статья Системный администратор Нет файла Казахстан Бесплатно (free) Администрирование данных 1С

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

30.08.2018    4208    held88    6       

Инструментарий Linux администратора 1С 147

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Меня зовут Евгений Бессонов. Сегодня я собираюсь вам рассказать про инструментарий Linux администратора 1С. Сразу хочу сделать небольшую ремарку относительно моих знаний в этой области: я не могу отнести себя к разряду «линукс-гиков» – ядро по ночам не пересобираю и патчи не накладываю. Но, тем не менее, у меня накопились кое-какие наработки, которыми я с вами сейчас хочу поделиться.

31.05.2018    19085    _evgen_b    41       

Сжатие логов журнала транзакции MS SQL 25

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С

Автоматический шринк журнала транзакций и перевод базы в простой режим восстановления.

14.04.2018    7774    bashinsky    8       

Авторизация с помощью сертификата ssl на nginx + Let's Encrypt 6

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Добрый день, вечер или ночь, все зависит от времени суток в который вам довелось прочитать мою статью. В связи с ростом колличества корпаративных клиентов, было принято решение дать доступ к учетной системе внешним пользователям. Для самостоятельного оформления заказов и отслеживания их состояний. Реализация была создан web интерфейс с необходимым функционалом и доступом. Тут же стал вопрос безопасности, кроме стандартных пользователь-пароль было решено еще усилить безопасность, для этого применили OpenVPN, но появились клиенты, для которых нельзя применять OpenVPN (политики безопасности, нежелания и.д.), тут на глаза попались статьи про доступ по ssl сертификату.

22.02.2018    5630    kolianus    1       

Git с человеческим лицом для тех, кто устал терять данные 96

Статья no Нет файла Бесплатно (free) Архивирование (backup) Управление проектом

Посвящается всем тем, у кого хоть раз в жизни пропадали файлы с важной информацией. Эта статья о том, как очень легко и быстро пользователю наколдовать "машину времени", которая будет возвращать потерянные файлы с возможностью восстановления любой предыдущей версии. Без программирования и программистов, без командных строк и системных администраторов. Руками любого бухгалтера, менеджера, секретаря или аналитика.

06.01.2018    62685    for_sale    59       

Оптимистические уровни изоляции в MS SQL Server 40

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Оптимистические уровни изоляции транзакций были введены в SQL Server 2005 как новый способ борьбы с проблемами блокировок и согласованности данных. В отличие от пессимистических уровней изоляции, при использовании оптимистических уровней запросы не могут считать данные, которые были изменены другими транзакциями, но еще не были зафиксированы (читаются "старые" данные). При этом не происходит конфликта совмещаемых (S) и монопольных (X) блокировок.

30.11.2017    12013    Irwin    1       

Типы блокировок в MS SQL Server 111

Статья Системный администратор Программист Нет файла MS SQL Бесплатно (free) Администрирование данных 1С

В SQL Server существует более 20 типов блокировок. Для начала мы рассмотрим основные из них, чтобы понять, когда и для чего SQL Server использует их.

29.11.2017    26933    Irwin    5       

Как посмотреть, какие данные заблокированы в СУБД MS SQL Server 61

Статья Системный администратор Программист Нет файла Бесплатно (free) Администрирование данных 1С

Иногда требуется посмотреть, какие объекты и данные заблокированы и какие блокировки на этих объектах стоят (речь идет только о транзакционных блокировках). В SQL Server для этих целей существует динамическое представление sys.dm_tran_locks. Оно возвращает сведения об активных в данный момент в SQL Server ресурсах диспетчера блокировок.

28.11.2017    13081    Irwin    11       

BackTracker - бот для контроля своевременности резервного копирования 13

Статья Системный администратор Нет файла Linux Бесплатно (free) Архивирование (backup)

Когда речь заходит о резервном копировании, паранойи много не бывает. Допустим, Вы настроили бэкап PostgreSQL в сетевое NAS хранилище. Проверили, скрипт работает, все хорошо, ежедневные бэкапы, глубина хранения и всё такое. Но в какой-то момент что-то пошло не так, и важно не упустить этот момент, как можно быстрее всё исправить. Поможет в этом специально обученный Telegram бот.

20.11.2017    8794    kuld    2       

"Из грязи в князи" или из реального HDD в виртуальный 20

Статья Системный администратор Приложение (exe) Windows Бесплатно (free) Архивирование (backup)

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

29.10.2017    10033    JohnConnor    10       

Потоковая репликация и непрерывное архивирование базы данных PostgreSQL - делюсь небольшим опытом 52

Статья Системный администратор Нет файла Россия Бесплатно (free) Архивирование (backup)

Постарался кратко описать опыт настройки потоковой репликации и непрерывного архивирования в PostgreSQL.

27.10.2017    15611    KRIHA    9       

Зачем 1С-нику NoSQL и CRDT 92

Статья Программист Нет файла Бесплатно (free) Производительность и оптимизация (HighLoad) Распределенная БД (УРИБ, УРБД) WEB

В статье речь пойдет о современных инструментах для хранения, транспорта, обработки и обмена данными на примере популярной NoSQL-базы CouchDB.

12.08.2017    19449    unpete    27       

Рекомендации по оптимальной настройке кластера 1С, настройке сервера MS SQL при работе в среде 1С 150

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Устанавливая 1С в клиент-серверном варианте, случается, что специалисты оставляют настройки кластера серверов 1С 8.3 по умолчанию. Это может приводить к неоптимальному использованию аппаратных ресурсов эксплуатируемых серверов и к нестабильной работе серверов 1С и СУБД. В статье рассмотрим рекомендации по основным настройкам кластера серверов 1С 8.3 и СУБД MS SQL.

25.05.2017    61600    user759624    65       

Проброс COM портов через TCP/IP с помощью Virtual Serial Ports Emulator (Windows) 109

Статья Системный администратор Программист Нет файла Windows Бесплатно (free) Фискальный регистратор Администрирование данных 1С

Проброс COM портов через TCP/IP с помощью Virtual Serial Ports Emulator (Windows) от компании Eterlogic . Простой пример настройки. Альтернатива стандартному маппингу com портов средствами Windows через RDP.

11.05.2017    59170    Shestik    97       

Очередная очистка таблиц средствами MS SQL 31

Статья Системный администратор Программист Нет файла Россия MS SQL Бесплатно (free) Чистка базы

Очередной пост про очистку таблицы средствами MS SQL. И почему стоит очищать большие таблицы порциями.

21.04.2017    15060    JesteR    9       

Долго закрывается терминальный сеанс 1С по RDP 13

Статья Системный администратор Нет файла Бесплатно (free) Администрирование данных 1С

Одно из решений, когда терминальная сессия сервера Win2008R2 x64 долго закрывается или не закрывается вообще.

01.03.2017    12394    Umix    6       

Бекап средствами MS SQL во внешний источник по датам 10

Статья Системный администратор Нет файла Бесплатно (free) Архивирование (backup)

Бекап средствами MS SQL (Transact-SQL) всех баз во внешний источник по папочкам и датам

08.02.2017    8627    ILYXA    10       

Свой сервер удаленной консультации на выделенном сервере Linux CentOS 22

Статья Системный администратор Программист Нет файла Linux Бесплатно (free) Администрирование данных 1С

Разворачиваем свою систему для удаленного доступа к клиентам с целью консультирования их по работе с конфигурациями 1С. В статье приведено описание, как развернуть сервер удаленной консультации на дешевом VDS Linux-сервере CentOS.

28.11.2016    12172    ifal    14