|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Sergey Pratch 2:5020/400 22 Aug 2002 00:13:36 To : Liliya Huff Subject : Hа: Отчеты -------------------------------------------------------------------------------- Hi! "Liliya Huff" <li@org.vrn.ru> сообщил/сообщила в новостях следующее: news:ak0m4s$2nul$1@ddt.demos.su... > часть операции execute. То есть даже при использовании сериализуемых > транзакий в данном случае снимок базы мы не получаем по одной очень простой > причине: фантомы и прочее предотвращаются на том множестве записей, которая > транзакция уже запрашивала (по сути при serializable туда грубо попадают > таблицы, к которым было обращение в select запросах). Если при выполнении > запроса 1 и запроса 2 используются одни и те же таблицы, то тогда все хорошо > более-менее, за исключением того, что параллельные транзакции будут ждать > снятия блокировки, но тут уж у них судьба такая. Если же при выполнении > запроса 2 используются какие-то таблицы X, не запрашиваемые запросом 1, то > тогда вообще говоря ситуация работы со снимком (при выполнении обоих > запросов даные те же) не гарантирована, так как никто не предотвращал > модификации по этим самым X. Поэтому вообще говоря уровень serializable и > работа со снимком базы (snapshot) - это вообще говоря не одно и то же. Hу это довольно просто решить, в начале транзакции делаем обращение к каждой из таблиц, только не по первичному ключу. Так как у MSSQL при использовании оптимизатором ПК может не заблокироватся вся таблица. Простое, тупое выражение решает эту проблему: SELECT TOP 1 1 FROM Tbl1 UNION ALL SELECT TOP 1 1 FROM Tbl2 ... SELECT TOP 1 1 FROM TblN -- С уважением, Сергей Прач ================= Please, send you private mail to: s_pratch@mail.ru --- ifmail v.2.15dev5 * Origin: LtawaSoft (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/1678663dcb60f.html, оценка из 5, голосов 10
|