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

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

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

MS SQL Server блокировки уровни изоляции

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

Введение в управление версиями строк

Когда происходит обновление, то при использовании оптимистических уровней изоляции SQL Server сохраняет старые версии строк в специальной области базы tempdb, которое называется хранилище версий. Для исходной строки в базе данных добавляется 14-ти байтный указатель, который ссылается на старую версию этой строки (в зависимости от ситуации, может быть несколько версий). Рисунок 1 иллюстрирует это поведение.


Рисунок 1. Хранилище версий

Теперь, когда операция чтения (иногда записи) обратится к строке, для которой установлена монопольная (X) блокировка, то конфликта блокировки не произойдет, а будет считана старая версия строки из хранилища версий, как показано на рисунке 2.


Рисунок 2. Операции чтения и хранилище версий

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

Также появляются дополнительные накладные расходы при изменении данных и их извлечении. SQL Server приходится копировать данные в базу tempdb и поддерживать связанный список версий записей, а при чтении данных нужно этот список обойти. Это добавляет дополнительную нагрузку на процессор и систему ввода/вывода.

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

Совет. При использовании оптимистических уровней изоляции рекомендуется устанавливать параметр FILLFACTOR меньше 100, чтобы оставалось свободное место на страницах индекса. Это уменьшит разбиение страниц, когда добавляется указатель на версию и увеличивается размер строки.

Оптимистические уровни изоляции транзакций

Есть два оптимистических уровня изоляции транзакций: READ COMMITTED SNAPSHOT и SNAPSHOT. Если быть точнее, то SNAPSHOT это полноценный уровень изоляции, в то время как READ COMMITTED SNAPSHOT это параметр базы даных, который влияет на поведение операций чтения с уровнем изоляции READ COMMITTED.

Рассмотрим эти уровнее подробнее.

Уровень изоляции READ COMMITTED SNAPSHOT

Оба оптимистических уровня изоляции включаются на уровне базы данных. READ COMMITTED SNAPSHOT (RCSI) включается командой ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON.

Примечание. Изменение этого параметра требует монопольного доступа к базе. Команда не выполнится, если есть другие подключения к базе. Вы можете переключить базу данных в однопользовательский режим или использовать команду ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK AFTER X SECONDS. При этом откатятся все активные транзакции и завершаться все подключения к базе.

Как уже говорилось, RCSI изменяет поведение операций чтения с уровнем изоляции READ COMMITTED. Но при этом не влияет на операции записи.

Как видно из рисунка 3, вместо установки совмещаемой (S) блокировки, которая привела бы к конфликту с монопольной (X) блокировкой, происходит чтение старой версии данных из хранилища версий. Операции записи устанавливают монопольные (X) блокировки и блокировки обновления (U) в пессиместических уровнях изоляции, поэтому они могут блокировать друг друга. Но при этом они уже не блокируют операции чтения, как это происходит с уровнем изоляции READ UNCOMMITTED.


Рисунок 3. Поведение уровня изоляции Read Committed Snapshot

Однако, существует большая разница между уровнями изоляции READ UNCOMMITTED и READ COMMITTED SNAPSHOT. Уровень изоляции READ UNCOMMITTED не устанавливает совмещаемые (S) блокировки, при этом возможны разные проблемы несогласованности данных (грязное чтение, неповторяющееся чтение и др.). С другой стороны, уровень изоляции READ COMMITTED SNAPSHOT дает нам полную согласованность данных на уровне команды (операции). В этом случае невозможно чтение незафиксированных данных, а также данных, которые изменялись с момента начала транзакции.

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

Уровень изоляции SNAPSHOT

SNAPSHOT является отдельным уровнем изоляции. Он должен быть явно задан в коде с помощью команды SET TRANSACTION ISOLATION LEVEL SNAPSHOT или с помощью табличного указания WITH (SNAPSHOT).

По умолчанию, использование уровня изоляции SNAPSHOT запрещено. Его необходимо включить с помощью команды ALTER DATABASE SET ALLOW_SNAPSHOT_ISOLATION ON. Эта команда не требует монопольного доступа к базе и ее можно выполнять когда есть активные пользователи.

Уровень изоляции SNAPSHOT обеспечивает согласованность данных на уровне транзакции. Транзакции будут работать с версией данными, зафиксированной на начало транзакции вне зависимости от того, сколько транзакция активна и какие изменения происходили с данными в других транзакциях в это время.

В примере, показанном на рисунке 4, Сессия 1 начинает транзакцию и читает строку в момент времени T1. В момент времени T2 Сессия 2 изменяет строку в неявной транзакции. При этом старая (оригинальная) версия строки помещается во временное хранилище базы tempdb.


Рисунок 4. Уровень изоляции Snapshot и операции чтения

Следующим этапом появляется Сессия 3, которая начинает еще одну транзакцию и читает ту же строку в момент T3. Она читает версию строки зафиксированную Сессией 2 (в момент времени T2). Сессия 4 снова меняет строку в неявной транзакции в момент времени T4. В итоге в хранилище окажутся две версии строки - одна, которая была записана между моментами T2 и T4, и другая, что была записана до момента T2. Теперь, если Сессия 3 опять прочитает те же самые данные, то будет считана версия строки из хранилища, которая была записана между моментами T2 и T4, т.к. эта версия была создана при начале транзакции Сессии 3. Аналогично, Сессия 1 будет использовать версию строки, которая существовала до момента T2. После фиксации транзакций в Сессии 1 и Сессии 3 хранилище версий запустит задачу по удалению обеих версий строк, конечно, если эти данные не нужны другим транзакциям.

Уровень изоляции SNAPSHOT предоставляет аналогичную согласованность данных, что и уровень SERIALIZABLE, но без установки блокировок, хотя может генерировать огромное количество данных в базе tempdb. Если у вас есть сессия, которая удаляет миллионы строк из таблиц, то все они будут скопированы в хранилище версий. Даже если сама инструкция выполняется с пессиместическим уровнем изоляции. Данные будут сохраняться для возможных транзакций, использующий уровень изоляции snapshot  или RCSI.

Теперь рассмотри поведение операций записи.Предположим, что Сессия 1 начинает транзакцию и обновляет одну из строк. Эта сессия удерживает монопольную (X) блокировку, как показано на рисунке 5.


Рисунок 5. Уровень изоляции snapshot и операции записи (1)

Сессия 2 хочет обновить все строки, у которых колонка Cancelled = 1. Она начинает сканирование таблицы, и когда должны быть считаться данные с orderid = 10, то читаются строки из хранилища версий, то есть последней зафиксированной версии до  начала транзакции Сессии 2. Это оригинальная версия строки (не обновленная), у нее значение колонки Cancelled = 0, поэтому Сессия 2 не обновляет ее. Сессия 2 продолжает сканирование таблицы, не устанавливая на эту строку блокировки обновления (U) и монопольные (X) блокировки.

Аналогично, Сессия 3 хочет обновить все строки, у которых Amount = 29.95. Когда она читает версию строки из хранилища версий, то определяет, что строка должна быть обновлена. При этом неважно, что Сессия 1 в это время меняет колонку Amount. "Новая версия" строки еще не зафиксирована, и ее не видят другие сессии. Сессия 3 хочет обновить строку в базе данных, пытается установить монопольную (X) блокировку, но получает отказ, потому что Сессия 1 уже установила на этой строке аналогичную блокировку.

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

В примере, показанном на рисунке 6, Сессия 1 начинает транзакцию и меняет одну из строк. Следующим шагом Сессия 2 начинает другую транзакцию. На самом деле, не так уж и важно, что сессия начинается раньше транзакции, при условии, что новая версия строки с OrderId = 10 не фиксируется.


Рисунок 6. Уровень изоляции snapshot и операции записи (2)

В любом случае Сессия 1 завершит транзакцию. В этот момент монопольная (X) блокировка строки снимается. Если Сессия 2 попытается прочитать эту строку, то по прежнему будет получать версию из хранилища версий, потому что это последняя зафиксированная версия при начале транзакции Сессией 2. Но если транзакция попытается изменить эту версию, то получит ошибку 3960 и транзакция откатится. Пример ошибки показан на рисунке 7.


Рисунок 7. Ошибка 3960

Совет. Ошибку 3960 можно обрабатывать с помощью операторов TRY/CATCH.

Не нужно забывать об этой проблеме, когда вы обновляете данные с уровнем изоляции SNAPSHOT в системе, в которой данные часто меняются. Один из возможных обходных путей, это использовать READCOMMITTED или другой пессиместический уровень изоляции с помощью табличных указаний операции обновления, как показано в листинге 1.

Листинг 1. Предотвращение ошибки 3960 с помощью табличного указания READCOMMITTED

set transaction isolation level snapshot
	begin tran
	select count(*) from Delivery.Drivers
	update Delivery.Orders with (readcommitted)
	set Cancelled = 1
	where OrderId = 10
rollback

Уровень изоляции SNAPSHOT  может изменить поведение системы. Предположим, мы имеем таблицу dbo.Colors, в которой две строки: Black и White. Код создания таблицы приведен в листинге 2.

Листинг 2. Поведение операции обновления с уровнем изоляции SNAPSHOT: Создание таблицы

create table dbo.Colors
(
	Id int not null,
	Color char(5) not null
)
go
insert into dbo.Colors(Id, Color) values(1,'Black'),(2,'White')

Теперь запустим две сессии одновременно. В первой сессии мы запустим обновление, которое установит в колонке Color цвет White для строк, в которых текущее значение равно Black. Код показан в листинге 3.

Листинг 3. Поведение операции обновления с уровнем изоляции SNAPSHOT: Код Сессии 1

begin tran
	update dbo.Colors
	set Color = 'White'
	where Color = 'Black'
commit

Во второй сессии, выполним противоположные операции, как показано в листинге 4.

Листинг 4. Поведение операции обновления с уровнем изоляции SNAPSHOT: Код Сессии 2

begin tran
	update dbo.Colors
	set Color = 'Black'
	where Color = 'White'
commit

Давайте запустим обе сессии одновременно с уровнем изоляции READ COMMITTED или любым другим пессиместическим уровнем. На первом шаге, как показано на рисунке 8, у нас есть конкуренция за ресурс. Одна из сессий установит монопольную (X) блокировку на строку и обновит ее. В тоже время другая сессия не сможет установить блокировку обновления (U) на эту же строку.


Рисунок 8. Пессимистические уровни изоляции: Шаг 1

Когда первая сессия зафиксирует транзакцию, то снимет монопольную (X) блокировку. В таблице окажутся две записи с одинаковым значением в колонке Color, потому что первая сессия уже произвела изменения (как показано на рисунке 9). В итоге в таблице всегда окажутся две одинаковые строки (Black или White), в зависимости от того, какая сессия первой успеет установить блокировку.


Рисунок 9. Пессимистические уровни изоляции: Шаг 2

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


Рисунок 10. Уровень изоляции snapshot

Вы должны быть в курсе, как работают уровни изоляции RSCI и SNASPSHOT, особенно если имеется код, который работает с блокировками. Например, имеется триггер, реализующий ссылочную целостность. Это может быть триггер ON DELETE, удаляющий данные из связанных таблиц. Этот триггер использует операцию select, чтобы проверить, имеются ли строки, связанные с удаляемой строкой. Используя оптимистические уровни изоляции можно пропустить строки, которые были изменены после начала транзакции. В этом случае правильнее использовать пессиместические уровни изоляции, например, READCOMMITTED.

Примечание. SQL Server использует уровень изоляции READ COMMITTED при проверке ограничения внешнего ключа. Это означает, что вы можете получить блокировку между операциями записи и чтения даже с оптимистическими уровнями изоляции, особенно если нет индексов ссылающихся столбцов, что приводит к сканированию таблицы.

Хранилище версий

Как уже говорилось ранее, необходимо следить за тем, как оптимистические уровни изоляции влияют на систему. Для примера, выполните следующий код, который удаляет все строки из таблицы Delivery.Orders (листинг 5).

Листинг 5. Удаление всех заказов из таблицы

set transaction isolation level read uncommitted
begin tran
	delete from Delivery.Orders
commit

Стоит отметить, что сессия запущена в режиме READ UNCOMMITTED. Даже если нет других транзакций, использующих оптимистические уровни изоляции, есть вероятность, что они возникнут перед фиксированием транзакции. В результате SQL Server должен поддерживать хранилище версий в не зависимости от того, запущены ли другие транзакции, использующие оптимистические уровни изоляции, или нет.

На рисунке 11 показано свободное место tempdb и размер хранилища версий. Видно, что после начала операции удаления размер хранилища версий растет, занимая все пространство tempdb.


Рисунок 11. Свободное место tempdb и размер хранилища версий

На рисунке 12 можно увидеть показатели формирования записей в хранилище версий и его очистки.

По умолчанию задача очистки выполняется раз в минуту, а также перед автоматическим увеличением размера базы tempdb.


Рисунок 12. Свободное место tempdb и размер хранилища версий

Есть еще 3 счетчика производительности, связанных с оптимистическими уровнями изоляции:

  1. Snapshot Transactions. Счетчик показывает количество активных транзакций, использующих уровень изоляции snapshot.
  2. Update Conflict Ratio. Показывает соотношение количества конфликтов обновления к общему количеству операций обновления с уровней изоляции snapshot.
  3. Longest Transaction Running Time. Показывает длительность в секундах самой старой активной транзакции, использующей версии строк.

Существует несколько динамических представлений (Dynamic Management Views - DMVs), которые могут быть полезны при решении вопросов, связанных с хранилищем версий и транзакций в целом. Подробнее на http://technet.microsoft.com/en-us/library/ms178621.aspx (Transaction Related Dynamic Management Views and Functions section).

Резюме

SQL Server в оптимистических уровнях изоляции использует версионирование строк. Транзакции не блокируются из-за несовместимости разделяемых (S) блокировок с блокировками обновления (U) и монопольными (X) блокировками, а используют "старые", зафиксированные ранее версии строк. Существуют два оптимистических уровня изоляции транзакции: READ COMMITTED SNAPSHOT и SNAPSHOT.

READ COMMITTED SNAPSHOT - это параметр базы данных, который влияет на поведение операций чтения, использующих режим READ COMMITTED. При этом он не влияет на операции записи - по прежнему сохраняются несовместимости блокировок (U)/(U) и (U)/(X). READ COMMITTED SNAPSHOT не требует изменений в код и может быть использован как "волшебная палочка", если в системе наблюдаются конфликты блокировок.

READ COMMITTED SNAPSHOT обеспечивает согласованность данных на момент выполнения операции, т.е. запрос читает данные, которые были зафиксированы на момент, когда запрос начался.

Уровень изоляции SNAPSHOT - отдельный уровень изоляции транзакций, который нужно явно указывать в коде. Этот уровень обеспечивать согласованность данных на уровне транзакции. Это значит, что запрос обращается к версии данных, которая была зафиксирована на момент начала транзакции.

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

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

--------------------------------
При написании статьи использовались материалы из книги Дмитрия Короткевича «Pro SQL Server Internals» (2014 г.)

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 22 01.12.17 12:14 Сейчас в теме
Хороший цикл статей, в конце статьи не хватает ссылок на другие статьи цикла.
И хорошо бы раскрыть аналогичные темы (цикла статей), но для PostrgreSQL
pragmatic; +1 Ответить
2. Dach 298 04.12.19 11:33 Сейчас в теме
"При использовании уровня изоляции SNAPSHOT операции записи не блокируют друг друга, за исключением тех случаев, когда они меняют одни и те же строки. Это приводит либо к блокировке, либо к ошибке 3960"

Странная фраза. Непересекающиеся наборы строк и так друг друга не блокируют.

Я из Вашей статьи про SNAPSHOT понял следующее: убирается несовместимость Х-блокировок. То есть, если запись какого-то набора строк привела к наложению Х-блокировки в одном сеансе, в другом сеансе другие строки смогут записаться, если они отличны от первых.

Не поленился и провел эксперимент. Включил в своей базе снапшот. Также у меня в базе включен RCSI. Затем в первом сеансе в транзакции записываю большой набор строк (600 тыс). Это привело к наложению Х-блокировки на всю таблицу (у меня периодический регистр сведений, цены номенклатуры). Во втором сеансе пытаюсь записать другой набор строк с другим периодом, то есть первый и второй наборы точно не пересекаются. Транзакция второго сеанса отваливается с ошибкой ожидания на транзакционной блокировке. Точно также, как это происходит в чистом RCSI.

Таким образом, непонятно, что Вы имеет ввиду, когда говорите что в снапшот "записи друг друга не блокируют".

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

Кстати, с точки зрения чтения, при включении снапшота дополнительно к RCSI - ничего не поменялось. Запрос внутри транзакции по прежнему получает данные на момент выполнения самого запроса, а не на момент начала транзакции, как в "чистом" снапшот.
Оставьте свое сообщение

См. также

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    61029    user700211_a.straltsou    27    

Взаимодействие 1С со сторонними продуктами посредством REST и Golang (middleware). Часть 3 - ElasticSearch

Интеграция Журнал регистрации Бесплатно (free)

Как в статье №1 этого цикла выгрузим через прослойку журнал регистрации (xml формат) в ElasticSearch. Статья будет иметь практическую направленность в минималистичном стиле

14.09.2020    593    dmitry-irk38    3    

Работа с журналом регистрации. Выходим за границы платформы

Журнал регистрации Бесплатно (free)

Работа с журналом регистрации нестандартными средствами. А также немного про использование платформы .NET в экосистеме 1С.

12.05.2020    5560    YPermitin    24    

Сказ о том, как online_analyze INSERT "удлинял"

Статистика базы данных Администрирование СУБД Бесплатно (free)

Немного о тонкостях работы модуля online_analyze для PostgreSQL. Опус для тех, у кого, как и у меня, не всегда хватает времени на то, чтобы разобраться, как это работает, и поэтому бывает так, что следуешь рекомендациям из сети и пользуешься методом "копипаста", пока не прижмет.

10.02.2020    2556    Sloth    2    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

15.01.2019    24485    itriot11    26    

Ошибка Frontol 5, 6 при работе с базой (internal gds software consistency check)

Тестирование и исправление Розничная и сетевая торговля (FMCG) Бесплатно (free)

При продаже товара выскакивает критическая ошибка "Ошибка работы с базой! Internal gds software consistency check (can't continue after bugcheck)" и работа базы прекращается, любые повторные попытки войти в базу приводят к огромным количествам не понятных ошибок, сбоев, зависаний и вообще может выдать что база не обнаружена (перемещена или удалена). При попытка остановить/перезапустить службу Frontol она вообще зависала и помогала только перезагрузка терминала

23.01.2020    4701    ClickUp    2    

Организация резервного копирования файлов с использованием rclone

Архивирование (backup) Россия Бесплатно (free)

Описание использования достаточно универсальной утилиты по синхронизации файлов.

21.01.2020    3734    malikov_pro    0    

Самые распространенные заблуждения об индексах в мире 1С

Администрирование данных 1С Администрирование СУБД Бесплатно (free)

"Магия" индексов привела к множеству заблуждений об их работе. Попробуем развеять некоторые из них в контексте 1С.

28.11.2019    20155    YPermitin    44    

Как настроить сервер 1С по умолчанию для ПРОФ лицензии после 10.09.2019 Промо

Администрирование данных 1С v8 Бесплатно (free)

Здесь мы собираем все данные по настройкам сервера для работы ПРОФ лицензии.

11.09.2019    72424    Infostart    90    

Установка и настройка нескольких экземпляров сервера 1С: Предприятия 8.3 разных релизов на одном Ubuntu-server

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

Запуск нескольких экземпляров сервера 1С Предприятия 8.3 разных релизов на одном Ubuntu-server.

19.09.2019    11534    Error34    18    

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

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

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

06.09.2019    9523    KlSergey    18    

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

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

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

06.09.2019    7975    2tvad    6    

Отчет по размерам таблиц в базе данных как одно из средств анализа проблем Промо

Статистика базы данных v8 1cv8.cf Бесплатно (free)

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

21.07.2015    33887    Aleksey.Bochkov    15    

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

Тестирование и исправление Бесплатно (free)

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

22.07.2019    6918    Сурикат    27    

Вопросы и ответы по лицензированию приложений Microsoft Office

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

Завершение цикла статей о лицензировании продуктов Microsoft.

23.06.2019    12193    accounting_cons    4    

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

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

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

11.06.2019    14631    extalionos    10    

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

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

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

28.12.2018    15557    VKuser24342747    1    

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

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

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

20.05.2019    14996    accounting_cons    8    

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

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

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

17.05.2019    11925    alfir70    19    

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

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

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

12.05.2019    35997    VKislitsin    9    

Чем PostgreSQL может быть полезен разработчику 1С Промо

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

20.12.2018    22951    Shmell    38    

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

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

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

06.04.2019    5616    VKislitsin    14    

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

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

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

19.03.2019    23797    accounting_cons    37    

Собираю Новый бюджетный Сервер для 1С ЗУП на 50 пользователей за 160 тысяч рублей (новый)

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

В продолжение темы https://infostart.ru/public/987835/ На данный момент подбираю бюджетный Сервер для 1С ЗУП на 50 пользователей за 160 тысяч рублей

06.03.2019    6537    Indgo    97    

Зачем в 1С нужно периодически пересчитывать итоги по регистрам? Промо

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

10.03.2013    223930    Aleksey.Bochkov    140    

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

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

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

26.02.2019    23654    accounting_cons    36    

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

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

Все, что вы хотели знать о лицензировании Microsoft Windows Server.

13.02.2019    23805    accounting_cons    45    

А еще был такой случай

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

Сервер, Сеть и два Сеанса.

04.02.2019    5849    kraynev-navi    12    

Создание пользователя СУБД MS SQL Промо

Администрирование данных 1С v8 Бесплатно (free)

Создание пользователя MS SQL для развертывания базы 1С.

15.02.2017    40015    hayroff    9    

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

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

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

29.01.2019    10974    Indgo    126    

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

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

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

24.01.2019    17924    Indgo    137    

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

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

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

09.01.2019    6913    independ    5    

Listary – интеллектуальный глобальный помощник поиска и выбора файлов в списках диалогов Windows Промо

Поиск данных Бесплатно (free)

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

18.08.2011    28783    tormozit    15    

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

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

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

22.12.2018    15081    Jokemas    25    

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

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

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

16.12.2018    31347    Aleksey81    34    

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

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

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

14.12.2018    16455    Aleksey81    45    

31 марта — Международный день резервного копирования Промо

Архивирование (backup) Бесплатно (free)

А вы сделали бэкап? А проверили, что его можно использовать?

31.03.2016    19407    Gilev.Vyacheslav    3    

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

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

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

18.11.2018    5837    osa92    3    

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

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

Сообщество программистов (администраторов) 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    12126    capitan    137    

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

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

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

04.10.2018    39467    zhogov    71    

Все, что надо знать о технологической платформе 1С:Предприятие: компоненты, архитектуры, операционные системы, лицензии Промо

Администрирование данных 1С v8 Бесплатно (free)

Все о платформе и лицензировании для начинающих и не только. (благодаря Сообществу учтены новейшие изменения лицензионной политики 1С!)

19.12.2015    71959    barelpro    50    

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

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

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

11.09.2018    10567    zhogov    42    

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

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

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

04.09.2018    16326    zhogov    87    

Пересечение транзакций. Примеры

Производительность и оптимизация (HighLoad) v8 Абонемент ($m)

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

3 стартмани

03.09.2018    10832    vasilev2015    5    

Кто заблокировал объект ? 7.7 (SQL/DBF) Промо

Администрирование данных 1С v7.7 1cv7.md Бесплатно (free)

Обработка блокировки объекта в базе для SQL/DBF варианта.

13.08.2010    38969    Ёпрст    123    

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

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

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

30.08.2018    6437    held88    6    

Сборка и разборка автомата Калашникова (и снова про RAID)

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

Тестирование RAID на запись в различных условиях.

13.06.2018    6761    viptextil1    5    

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

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

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

14.04.2018    10854    bashinsky    8    

LiteManager — удаленное администрирование. Описание, практика применения, рекомендации. Промо

Сервисные утилиты Администрирование данных 1С Бесплатно (free)

Удаленное администрирование компьютерами. Локальная сеть. Интернет. Описание, практика применения, рекомендации.

30.04.2013    80084    StepByStep    55