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

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

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

В 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 г.)

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

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

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

См. также

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

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

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

14.04.2017    62325    user700211_a.straltsou    29    

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

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

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

14.09.2020    1037    dmitry-irk38    4    

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

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

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

12.05.2020    6538    YPermitin    27    

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

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

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

10.02.2020    2663    Sloth    2    

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

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

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

15.01.2019    26076    itriot11    27    

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

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

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

23.01.2020    5580    ClickUp    2    

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

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

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

21.01.2020    4055    malikov_pro    0    

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

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

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

28.11.2019    21416    YPermitin    50    

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

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

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

11.09.2019    78135    Infostart    90    

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

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

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

19.09.2019    11900    Error34    19    

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

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

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

06.09.2019    10194    KlSergey    21    

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

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

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

06.09.2019    8220    2tvad    6    

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

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

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

21.07.2015    34285    Aleksey.Bochkov    15    

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

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

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

22.07.2019    7250    Сурикат    27    

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

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

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

23.06.2019    13649    accounting_cons    6    

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

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

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

11.06.2019    15772    extalionos    10    

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

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

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

28.12.2018    15974    VKuser24342747    1    

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

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

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

20.05.2019    16808    accounting_cons    8    

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

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

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

17.05.2019    12478    alfir70    19    

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

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

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

12.05.2019    43026    VKislitsin    9    

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

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

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

20.12.2018    23304    Shmell    39    

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

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

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

06.04.2019    5942    VKislitsin    14    

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

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

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

19.03.2019    26754    accounting_cons    37    

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

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

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

06.03.2019    6749    Indgo    97    

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

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

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

10.03.2013    227411    Aleksey.Bochkov    140    

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

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

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

26.02.2019    25468    accounting_cons    39    

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

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

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

13.02.2019    26106    accounting_cons    45    

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

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

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

04.02.2019    5894    kraynev-navi    12    

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

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

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

15.02.2017    40983    hayroff    9    

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

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

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

29.01.2019    11095    Indgo    126    

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

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

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

24.01.2019    18322    Indgo    137    

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

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

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

09.01.2019    7002    independ    5    

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

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

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

18.08.2011    28886    tormozit    15    

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

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

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

22.12.2018    15311    Jokemas    25    

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

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

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

16.12.2018    33827    Aleksey81    34    

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

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

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

14.12.2018    17803    Aleksey81    45    

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

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

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

31.03.2016    19461    Gilev.Vyacheslav    3    

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

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

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

18.11.2018    6104    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    12314    capitan    137    

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

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

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

04.10.2018    41852    zhogov    72    

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

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

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

19.12.2015    73217    barelpro    51    

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

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

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

11.09.2018    10730    zhogov    42    

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

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

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

04.09.2018    16830    zhogov    88    

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

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

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

30.08.2018    6536    held88    6    

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

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

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

13.08.2010    39818    Ёпрст    123    

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

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

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

13.06.2018    6867    viptextil1    5    

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

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

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

14.04.2018    11091    bashinsky    8    

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

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

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

22.02.2018    8285    kolianus    1    

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

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

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

30.04.2013    80853    StepByStep    55