Особливості нетранзакційного читання даних
Примітка: Ця стаття актуальна в тих випадках, коли використовуються СУБД:
|
Примітка: Ця стаття актуальна в тих випадках, коли використовуються СУБД:
|
Під час читання даних поза транзакцією слід враховувати особливості реалізації нетранзакційного читання даних у файловому та клієнт-серверному варіантах роботи.
Клієнт-серверний варіант роботи
У разі клієнт-серверного варіанта роботи під час нетранзакційного читання можна отримати нецілісні дані.
Відбувається це тому, що операції читання, виконувані поза межами транзакції, використовують рівень ізоляції read uncommited, тобто буде прочитано незафіксовані зміни, виконані іншими транзакціями. Рівень ізоляції read uncommited використовується тому, що має бути забезпечена передбачувана швидкість під час виконання читання, тобто не можна "спотикатися" об блокування, встановлені транзакціями інших користувачів
Наочним проявом цієї особливості може слугувати запис у транзакції великої кількості нових документів і подальше скасування цієї транзакції. Якщо в процесі виконання такої транзакції в іншому сеансі 1С:Підприємства відкрити список створюваних документів, то можна побачити, що в міру виконання коду створюються нові документи, а після скасування транзакції всі створені документи буде видалено. Так відбувається тому, що дані в динамічних списках читаються в нетранзакційному режимі, внаслідок чого, незважаючи на те, що транзакція активна, незафіксовані зміни, виконані в цій транзакції, будуть видимі іншим застосункам 1С:Підприємства:

Файловий варіант роботи
Під час роботи у файловому варіанті нетранзакційне читання виконується інакше. У файловому варіанті платформа 1С:Підприємство 8 підтримує версіонування під час нетранзакційного читання. Тому запити не вибирають дані незафіксованих змін інших транзакцій.
Наприклад, якщо порівнювати виконання попереднього прикладу у файловому варіанті та клієнт-серверному варіанті, можна зазначити такі відмінності:

Для випадку, коли виконувана транзакція успішно фіксується, порівняння роботи у двох варіантах роботи матиме такий вигляд:

Незважаючи на те, що у файловому варіанті роботи підтримується версіонування, під час виконання процедур, у яких використовується неодноразове звернення до бази даних, є ймовірність отримати неузгоджені дані. Це може статися внаслідок того, що в період між виконанням одного та іншого запиту стан зчитуваних даних було змінено іншою транзакцією:

|
Резюме |