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

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

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

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

Когда происходит добавление, обновление или удаление строк, то SQL Server устанавливает монопольную блокировку (X) на строку и удерживает ее до окончания транзакции. Как можно понять из названия, монопольная (exclusive) - означает, что только одна сессия может установить эту блокировку в один момент времени. Эта блокировка защищает объект (например, строку) от изменения другими сессиями. Важный момент - монопольные блокировки (X) не снимаются до окончания транзакции независимо от уровня изоляции. Чем дольше длится транзакция, тем дольше сохраняются монопольные блокировки (X).

Блокировки на уровне строк улучшают согласованность данных, но в то же время эти блокировки плохо сказываются на всей системе в целом. Давайте подумаем, в каких случаях может потребоваться монопольный доступ к таблице? Например, когда мы хотим изменить метаданные таблицы или создать новый индекс. Если у нас установлены блокировки только на уровне строк, тогда каждая сессия будет сканировать таблицу в поисках установленных блокировок для каждой строки, а также устанавливать свои блокировки, чтобы предотвратить изменения уже просканированных строк. Как вы уже поняли, это было бы неэффективно с точки зрения операций ввода-вывода и памяти, особенно на больших таблицах. Для этого в SQL Server введено такое понятие, как блокировка с намерением (I*). SQL Server использует их, чтобы показать, что есть блокировки на более низком уровне. Рассмотрим их.

Примечание. Во всех примерах будет использоваться таблица Delivery.Orders, структура которой описана ниже. Эта таблица имеет кластерный первичный ключ OrderId. Другие индексы не используются.

create table Delivery.Orders
(
	OrderId int not null identity(1,1),
	OrderDate smalldatetime not null,
	OrderNum varchar(20) not null,
	Reference varchar(64) null,
	CustomerId int not null,
	PickupAddressId int not null,
	DeliveryAddressId int not null,
	ServiceId int not null,
	RatePlanId int not null,
	OrderStatusId int not null,
	DriverId int null,
	Pieces smallint not null,
	Amount smallmoney not null,
	ModTime datetime2(0) not null
		constraint DEF_Orders_ModTime
		default getDate(),
	PlaceHolder char(100) not null
		constraint DEF_Orders_Placeholder
		default 'Placeholder',

	constraint PK_Orders
	primary key clustered(OrderId)
)

Пример на рисунке 1 показывает блокировки сессии, после того, как была выполнена операция обновления строки таблицы. Показана одна монопольная блокировка (X) строки (KEY), и две монопольные блокировки с намерением (IX) для страницы (PAGE) и таблицы (OBJECT). Монопольные блокировки с намерением (IX) всего-лишь показывают, что есть другие монопольные блокировки, но уже на других уровнях (ниже уровня текущей блокировки). Имеется также совмещаемая (S) блокировка базы данных. Совмещаемые (S) блокировки будут рассмотрены ниже в этой главе.


Рисунок 1. Монопольная (X) блокировка и монопольная блокировка с намерением (IX)

Колонка "resourse_description" показывает описание ресурсов, для которых установлены блокировки. Для страницы (PAGE) указывается ее физическое размещение (страница 994 в файле 1 базы данных), для строки (KEY) это хэш ключа индекса.

Теперь, если другой сессии требуется установить монопольный доступ к таблице (OBJECT), то она может проверить блокировки с намерением на этом объекте, а не сканировать всю таблицу.

Еще один важный тип блокировок - блокировки обновления (U). SQL Server устанавливает этот тип блокировок при поиске строк, которые необходимо обновить. После того, как блокировка обновления (U) установлена, SQL Server считывает строку и проверяет, нужно ли ее обновить, сверив значения строки с условиями в запросе. Если строка удовлетворяет условиям, то блокировка обновления (U) меняется на монопольную блокировку (X), затем строка модифицируется. В противном случае блокировка обновления (U) снимается. Давайте посмотрим как это работает на рисунке 2.


Рисунок 2. Блокировки обновления (U) и монопольные (X) блокировки

Сначала SQL Server устанавливает монопольную блокировку с намерением (IX) на уровне таблицы (OBJECT). После этого он устанавливает блокировки обновления с намерением (IU) на страницы и блокировки обновления (U) на строки, а затем изменяет их на монопольные блокировки с намерением (IX) и монопольные блокировки (X). Наконец, когда мы откатили транзакцию, все блокировки снялись.

Стоит отметить, что поведение блокировок обновления (U) зависит от плана выполнения. В некоторых случаях, когда мы обновляем несколько записей, SQL Server может установить сперва на все строки блокировки обновления (U), а затем заменить их на монопольные блокировки (X). В других случаях, когда, например, мы обновляем только одну строку, которая является ключом кластерного индекса, SQL Server может сразу установить монопольную блокировку (X), без установки блокировки обновления (U).

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


Рисунок 3. Блокировки обновления и неоптимальные запросы

Т.к. по колонке OrderNum нет индексов, то SQL Server вынужден сканировать всю таблицу и устанавливать блокировки обновления (U) на каждую строку, которую прочитал. Даже если нам требуется обновить только одну строку. Что произойдет, если несколько сессий одновременно попытаются установить на те же самые ресурсы? Совместимость блокировок показана в таблице 1.

Таблица 1. Матрица совместимости блокировок

  (IU) (U) (IX) (X)
(IU) Да Нет Да Нет
(U) Нет Нет Нет Нет
(IX) Да Нет Да Нет
(X) Нет Нет Нет Нет

Ключевые моменты:

  • Блокировки с намерениями (IU/IX) совместимы друг с другом. Это значит, что несколько сессий одновременно могут иметь блокировки с намерениями на уровне объектов/страниц.
  • Монопольные блокировки (X) несовместимы друг с другом. Это означает, что несколько сессий не могут одновременно установить монопольные блокировки на один и тот же ресурс. Например, несколько сессий не могут одновременно обновить одну и ту же строку.
  • Блокировки обновления (U) несовместимы друг с другом, а также с монопольными блокировками (X). Это означает, что сессия не может установить блокировку обновления (U) одновременно с другой сессией, которая уже установила исключительную блокировку (X) или блокировку обновления (U).

Последний пункт является одним из типичных сценариев блокировок. Предположим, в одной сессии мы установили монопольную блокировку (X) на одну из строк таблицы. В другой сессии мы пытаемся обновить другую строку этой же таблицы и запускаем запрос на обновление с неоптимальным планом, что приводит к сканированию всей таблицы. SQL Server будет устанавливать блокировку обновления (U) на каждую просканированную строку, но в итоге не сможет завершить операцию, т.к. попытается прочитать строку, на которой уже была установлена монопольная блокировка (X). И при этом неважно, что мы хотим обновить совершенно другую строку, для SQL Server необходимо прочитать строку, чтобы установить на нее блокировку обновления (U), и после этого проверить, нужно ли ее обновить.

Для каждой системы, мы можем все выполняемые запросы разделить на две группы: которые модифицируют данные, и которые данные читают. К первой группе относят INSERT, UPDATE, DELETE и MERGE запросы. Ко второй группе относят SELECT запросы. Для запросов, которые только читают данные, существует еще один тип блокировки - совмещаемые (S) (shared). Как можно догадаться по названию, эти блокировки совместимы между собой, т.к. несколько сессий одновременно могут установить эти блокировки на один и тот же ресурс. Вы можете увидеть эти блокировки на рисунке 4.


Рисунок 4. Совмещаемые блокировки (S)

В этом примере видны два сессии, одновременно читающих одну и ту же строку. Обе сессии установили совмещаемые блокировки (S) на базу данных, совмещаемые блокировки с намерениями (IS) на таблицу, страницу (1:955) и совмещаемую блокировку (S) на строку, при этом не блокируя друг друга. Добавим совмещаемые блокировки (S) в матрицу совместимости блокировок (таблица 2).

Таблица 2. Матрица совместимости блокировок

  IS S (IU) (U) (IX) (X)
(IS) Да Да Да Да Да Нет
(S) Да Да Да Да Нет Нет
(IU)  Да Да Да Нет Да Нет
(U)  Да Да Нет Нет Нет Нет
(IX)  Да Нет Да Нет Да Нет
(X) Нет  Нет Нет Нет Нет Нет

Несколько ключевых моментов, связанных со совмещаемыми блокировками (S):

  • Совмещаемые блокировки (S) совместимы друг с другом, это значит, что несколько сессий одновременно могут читать одни и те же данные не блокируя друг друга.
  • Совмещаемые блокировки (S) и блокировки обновления совместимы друг с другом, это значит, что запросы на чтение и обновление данных не блокируют друг друга.
  • Совмещаемые блокировки (S) не совместимы с монопольными блокировками. Это значит, что запросы на чтение не могут получить неподтвержденные данные, изменяемые в других сессиях.

Что управляет блокировкой? На блокировки в первую очередь влияют уровни изоляции транзакции. Исторически SQL Server использует 4 пессиместических уровня изоляции: read uncommitted (неподтвержденное чтение); read committed (подтвержденное чтение); repeatable read (повторяемое чтение), и serializable (упорядоченный или сериализуемый). Начнем с них. Существует также два оптимистических уровня изоляции: read committed snapshot (подтвержденное чтение с включенным параметром READ_COMMITTED_SNAPSHOT) и snapshot (изоляция моментального снимка), которые будут рассмотрены далее в этой книге.

Примечание. SQL Server работу с данными всегда выполняет в транзакции. Клиент может сам контролировать начало и окончание транзакции, используя команды BEGIN TRAN/COMMIT. В противном случае SQL Server начинает транзакции неявно для каждого действия. Даже оператор SELECT выполняет в транзакции. При этом в журнал транзакций информация о транзакции при выполнении оператора SELECT не записывается, хотя при этом действуют все ограничения, касающиеся блокировок и параллелизма.

Как мы уже знаем, SQL Server удерживает монопольную (X) блокировку до конца транзакции, вне зависимости от того, какой уровень изоляции используется. При использовании пессиместических уровней изоляции, блокировки обновления (U) ведут себя аналогичным образом. SQL Server будет ставить блокировки обновления на данные, для того, чтобы определить, что требуется обновить, а что нет. Опять же, независимо от используемого уровня изоляции транзакции.

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

Ключевая разница между пессимистическими уровнями изоляции транзакций, это то, как SQL Server работает с совмещаемыми (S) блокировками.

Если используется уровня изоляции read uncommited, то при чтении не накладываются совмещаемые (S) блокировки, поэтому сеанс может прочитать даже те данные, на которые установлена монопольная (X) блокировка. Поэтому этот уровень изоляции часто называют "грязное чтение". С точки зрения параллелизма это означает, что никакой согласованности данных нет. При чтении данных считываются текущие (модифицированные) версии строк, не зависимо от того, что произойдет с ними дальше. Транзакция изменившая строки может откатиться или сами строки могут быть изменены несколько раз. Такое поведение мы можем увидеть на рисунке 5.


Рисунок 5. Уровень изоляции read uncommitted и совмещаемые блокировки

При чтении данных с уровнем изоляции read commited сразу устанавливаются совмещаемые блокировки (классы событий Lock:Acquired и Lock:Released). Это предотвращает чтение незафиксированных данных, т.к. совмещаемые (S) блокировки несовместимы с монопольными (X) блокировками. Пример показан на рисунке 6.


Рисунок 6. Уровень изоляции read committed и совмещаемые блокировки

Примечание. В некоторых случаях, при чтении с уровнем изоляции read commited, SQL Server может оставлять совмещаемые (S) блокировки до тех пор, пока выполняется оператор SELECT, а не снимать их сразу после чтения.

При использовании уровня изоляции repeatable read совмещаемые блокировки при чтении удерживаются до конца транзакции (как показано на рисунке 7). Такое поведение запрещает изменять строки, которые были однажды прочитаны, т.к. на эти данные уже наложены совмещаемые (S) блокировки. Как и в случае с уровнем изоляции read commited, нельзя прочитать данные, которые были изменены в других сессиях.


Рисунок 7. Уровень изоляции repeatable read и совмещаемые блокировки

Уровень изоляции serializable работает практически также, как и repeatable read, но вместо отдельных блокировок на уровне строк используются блокировки диапазона ключей (как для совмещаемых (S), так и для монопольных (X) блокировок). Можно увидеть пример такого поведения на рисунке 8.


Рисунок 8. Уровень изоляции serializable и совмещаемые блокировки

Примечание. Предположим, что нам необходимо выбрать заказы с OrderID между 1 и 3, при этом у нас нет заказа с OrderID равное 2. В случае с уровнем изоляции repeatable read будут установлены отдельные совмещаемые (S) блокировки для каждой строки (1 и 3). Другие сессии не смогут изменить эти две строки, но смогут вставить третью с OrderID равное 2. При уровне изоляции serializable будет установлена совмещаемая блокировка на диапазон (Range-S), которая будет запрещать как изменять строки, так и вставлять новые, которые попадают в этот диапазон.

В таблице 3 показано, как уровни изоляций транзакций влияют на совмещаемые (S) блокировки.

Таблица 3. Поведение совмещаемых (S) блокировок

Уровень изоляции Табличное указание Поведение совмещаемой блокировки
Read uncommitted (NOLOCK) (S) блокировки не устанавливаются
Read committed (READCOMMITTED) (S) блокировки устанавливаются и сразу снимаются
Repeatable read (REPEATABLEREAD) (S) блокировки устанавливаются и сохраняются до конца транзакции
Serializable (SERIALIZABLE) Устанавливаются блокировки на диапазон и сохраняются до конца транзакции

Примечание. SQL Server работу с данными всегда выполняет в транзакции. Клиент может сам контролировать начало и окончание транзакции, используя команды BEGIN TRAN/COMMIT. В противном случае SQL Server начинает транзакции неявно для каждого действия. Даже оператор SELECT выполняет в транзакции. При этом в журнал транзакций информация о транзакции при выполнении оператора SELECT не записывается, хотя при этом действуют все ограничения, касающиеся блокировок и параллелизма.

Мы можем управлять совмещаемыми (S) блокировоками с помощью уровня изоляции транзакций и табличных указаний. Это позволяет в одном запросе, объединяющем несколько таблиц, указывать свой "уровень изоляции" для каждой таблицы. Например, код в листинге 1 возвращает два результирующих набора. В первом наборе данных мы использует уровень изоляции read commited (таблица customers), а во втором serializable (таблица orders). Совмещаемые (S) блокировки для таблицы customers снимутся сразу после чтения строк, но для таблицы orders останутся до конца транзакции. Другие сессии смогут изменять строки для таблицы customers, но не смогут изменить данные таблицы orders, которые были прочитаны при выполнении запроса.

Листинг 1. Контроль поведения блокировок, используя табличные указания (table hint)

begin tran
	select c.CustomerName, sum(o.Total)
	from
		dbo.Customers c with (readcommitted) join dbo.Orders o with (serializable) o on
			o.CustomerId = c.CustomerId
	group by
		c.CustomerName
	select top 10 o.OrderNum, o.OrderDate
	from dbo.Orders
	order by o.OrderDate desc
commit

Примечание. Дополнительную информацию по табличным указаниям (table hint) можно получить перейдя по ссылке: https://msdn.microsoft.com/ru-ru/library/ms187373.aspx

Мы можем изменить тип устанавливаемой блокировки при чтении с помощью табличных указателей (UPDLOCK) и (XLOCK). Это может быть полезно, когда нужно обеспечить последовательный доступ на чтение к некоторым данным, таких как счетчики таблиц, когда нужно выбрать некоторое значение из таблицы, выполнить обработку и обновить строку. В этом случае, использование блокировки обновления (U) или монопольной (X) блокировки запретит чтение данных до тех пор, пока первая сессия не завершит транзакцию. Пример показан в листинге 2.

Листинг 1. Управление блокировками, используя табличные указания (table hint)

begin tran
	-- placing update (U) lock on the row to prevent multiple sessions to select the value from
	-- the same counter simultaneously due update (U) locks incompatibility
	select @Value = Value
	from dbo.Counters with (updlock)
	where CounterName = @CounterName

	update dbo.Counters
	set Value += @ReserveCount
	where CounterName = @CounterName
commit

Примечание. Код в листинге 2 показан только для примера. Он не обрабатывает ситуацию, когда конкретного счетчика нет в таблице. Лучше использовать последовательности (SEQUENCE) где это возможно, а не счетчики таблиц.

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

Грязное чтение: Грязное чтение - это ситуация, когда сессия читает незафиксированные (грязные) данные других незавершенных транзакций. Очевидно, что в такие моменты мы не знаем, будут ли активные транзакции фиксироваться или откатываться; а может данные будут изменены несколько раз. Представим, что пользователь хочет перевести деньги с текущего счета на сберегательный. Есть две физические операции с данными: это списание со счета и зачисление на счет. Логически эти две операции должны выполняться в одной транзакции. Если другая сессия в этот момент читает остатки в режиме грязного чтения в промежутке между операциями (между двумя обновлениями данных), тогда данные будут неправильные.

Как мы помним, сессия устанавливает и удерживает монопольные (X) блокировки на строки, которые изменила. Единственный случай, когда мы можем прочитать эти (измененные) строки, когда мы не используем совмещаемые (S) блокировки при чтении, т.е. используем уровень изоляции read uncommitted. Все остальные пессиместические уровни изоляции устанавливают совмещаемые (S) блокировки и не могут получить грязное чтение.

Неповторяющееся чтение: Несоответствие данных возникает, когда данные изменены или удалены между чтениями в пределах одной транзакции. Представим ситуацию, когда мы готовим отчет в системе приема заказов, который выводит список заказов конкретного клиента, и выполняет еще один запрос с итоговыми данными (например, общая сумма, которую клиент тратит на ежемесячной основе). Если после считывания данных первой частью отчета другая сессия изменит или удалить один из заказов, то суммы не сойдутся.

Такое может произойти, если мы не защитили/заблокировали данные между операциями чтения. Подобная ситуация случается, когда мы читаем данные с уровнем изоляции read uncommitted (в котором не устанавливаются совмещаемые (S) блокировки), или с уровнем изоляции read committed (при котором совмещаемые (S) блокировки устанавливаются и сразу снимаются). Уровни изоляции repeatable read и serializable удерживают совмещаемые (S) блокировки до конца транзакции, поэтому после чтения данные уже не могут быть изменены другой сессией.

Фантомное чтение: Это ситуация, когда повторное чтение в пределах одной транзакции возвращает новые строки (те, которые мы не читали ранее). Рассмотрим предыдущий пример с отчетом, только в этот раз заказ будет не изменен или удален, а добавлен новый. Даже уровень изоляции repeatable read не спасет нас в этом случае. Мы устанавливаем совмещаемые (S) блокировки при чтении строк, но ключевой диапазон при этом не защищен. Чтобы избежать подобных проблем необходимо использовать уровень изоляции serializable, т.к. он устанавливает блокировки на диапазон.

Существуют еще два других случая, связанных с перемещением данных при изменении значения ключа индекса.

Дублирующееся чтение: Предположим, у нас есть запрос, который возвращает список заказов за определенный интервал времени и использует индекс по колонке Дата заказа. В момент выполнения этого запроса другая сессия может изменить дату одного из заказов, который мы уже успели прочитать, тем самым переместив строку из обработанной запросом части индекса в еще необработанную. В этом случае запрос прочитает одну и ту же строку дважды. Такая ситуация возможна, если мы при чтении данных не удерживаем совмещаемые (S) блокировки (уровни изоляции read uncommitted и read committed) до окончания выполнения запроса. Для уровней изоляции repeatable read и serializable эта проблема неактуальна, потому что эти уровни удерживают совмещаемые (S) блокировки до конца транзакции.

Пропущенные строки: Тоже самое, что и дублирующееся чтение, но вторая сессия перемещает данные из необработанной части индекса в обработанную. Запрос первой сессии не прочитает измененную строку и не включит в выборку. Уровень изоляции repeatable read не спасет, потому что совмещаемые (S) блокировки устанавливаются на отдельные строки, но при этом есть возможность добавлять данные между ними. Только уровень изоляции serializable позволит избежать подобных проблем.

Таблица 4. Уровни изоляции транзакций и несоответствия данных

  Грязное чтение Неповторяющееся чтение Дублирующееся чтение Фантомное чтение Пропущенные строки
Read uncommitted Да Да Да Да Да
Read committed Нет Да Да Да Да
Repeatable read Нет Нет Нет Да Да
Serializable Нет Нет Нет Нет Нет

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

К счастью, есть решение подобной проблемы: оптимистические уровни изоляции транзакций - read committed snapshots и snapshots, которые мы рассмотрим в следующей статье.

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

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

111

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

Комментарии
Избранное Подписка Сортировка: Древо
1. jobkostya1c8 30.11.17 09:11 Сейчас в теме
Надо запомнить статейку. Пора по-серьезному SQL заняться.
Maxis; SP2000; +2 Ответить
2. echo77 1094 06.12.17 08:21 Сейчас в теме
Пока не понимаю, чем это поможет в проектировании системы на 1С:Предприятие
3. kolya_tlt 11 06.02.18 17:52 Сейчас в теме
(2)
имаю, чем это поможет в проектировании системы на 1С:Предприятие

возможно вы перестанете писать кривые запросы и задавать вопросы почему они медленно работают. а всё это следствие никчемного проектирования системы
Rans; antoha.o; bug256; Irwin; +4 1 Ответить
4. azazana 56 09.07.19 12:07 Сейчас в теме
Можно я утащу кусочек себе в статью? Ссылку на вас вставлю.
5. Irwin 327 10.07.19 12:56 Сейчас в теме
Оставьте свое сообщение

См. также

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

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

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

06.09.2019    1745    KlSergey    14       

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

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

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

06.09.2019    3974    2tvad    6       

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

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

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

22.07.2019    2381    Сурикат    27       

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

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

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

11.06.2019    4624    extalionos    4       

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

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

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

20.05.2019    4598    accounting_cons    3       

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

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

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

17.05.2019    5395    alfir70    19       

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

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

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

12.05.2019    6354    -vito-    7       

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

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

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

06.04.2019    1963    -vito-    9       

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

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

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

19.03.2019    7318    accounting_cons    37       

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

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

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

26.02.2019    9646    accounting_cons    30       

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

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

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

29.01.2019    7236    ogidni    126       

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

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

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

24.01.2019    10974    ogidni    136       

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

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

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

09.01.2019    4148    independ    4       

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

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

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

28.12.2018    10297    VKuser24342747    1       

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

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

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

22.12.2018    11263    Jokemas    25       

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

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

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

20.12.2018    6431    Kochergov    13       

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

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

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

18.12.2018    34215    a.doroshkevich    153       

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

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

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

16.12.2018    17331    Aleksey81    30       

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

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

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

14.12.2018    8801    Aleksey81    41       

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

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

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

10.12.2018    19952    user1068014    98       

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

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

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

18.11.2018    2657    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    8172    capitan    137       

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

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

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

04.10.2018    19607    zhogov    55       

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

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

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

04.10.2018    7447    ivanov660    23       

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

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

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

11.09.2018    8040    zhogov    32       

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

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

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

04.09.2018    11622    zhogov    86       

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

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

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

30.08.2018    4306    held88    6       

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

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

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

31.05.2018    19344    _evgen_b    41       

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

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

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

14.04.2018    7863    bashinsky    8       

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

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

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

22.02.2018    5713    kolianus    1       

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

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

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

06.01.2018    63084    for_sale    59       

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

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

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

30.11.2017    12116    Irwin    1       

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

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

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

28.11.2017    13276    Irwin    11       

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

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

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

20.11.2017    8895    kuld    2       

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

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

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

29.10.2017    10107    JohnConnor    10       

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

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

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

27.10.2017    15748    KRIHA    9       

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

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

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

25.05.2017    62276    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    59720    Shestik    97       

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

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

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

21.04.2017    15261    JesteR    9       

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

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

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

01.03.2017    12484    Umix    6       

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

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

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

08.02.2017    8733    ILYXA    10       

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

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

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

28.11.2016    12243    ifal    14       

Как объять необъятное, или советы по тестированию 42

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

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

18.10.2016    13370    nrukol    14       

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

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

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

20.09.2016    15048    close_os    14