Главная страница


su.dbms

 
 - SU.DBMS ----------------------------------------------------------------------
 From : Liliya Huff                          2:5020/400     21 Aug 2002  22:30:04
 To : Nik Sestrin
 Subject : Re: Отчеты
 -------------------------------------------------------------------------------- 
 
 Добрый день!
 
 > в mssql можно использовать сериализуемое выполнение транзакций ... а
 
 вообще
 
 > да, налицо явное непонимание, что такое транзакция
 
 ms sql работает с блокировками, как и у любого блокировщика, прежде, чем
 наложить блокировку, сервер определяет целевое множество блокирования, по
 сути это набор идентификаторов записей (никуда не денешься, блокирование
 предикатов не реализовано ни у кого), а этот процесс занимает время, и
 вообще говоря не является не прерываемым, так как он фактически составная
 часть операции execute. То есть даже при использовании сериализуемых
 транзакий в данном случае снимок базы мы не получаем по одной очень простой
 причине: фантомы и прочее предотвращаются на том множестве записей, которая
 транзакция уже запрашивала (по сути при serializable туда грубо попадают
 таблицы, к  которым было обращение в select запросах). Если при выполнении
 запроса 1 и запроса 2 используются одни и те же таблицы, то тогда все хорошо
 более-менее, за исключением того, что параллельные транзакции будут ждать
 снятия блокировки, но тут уж у них судьба такая. Если же при выполнении
 запроса 2 используются какие-то таблицы X, не запрашиваемые запросом 1, то
 тогда вообще говоря ситуация работы со снимком (при выполнении обоих
 запросов даные те же) не гарантирована, так как никто не предотвращал
 модификации по этим самым X. Поэтому вообще говоря уровень serializable и
 работа со снимком базы (snapshot) - это вообще говоря не одно и то же.
 
 > автору исходного вопроса: нет причины, не позволяющей расчитать
 > остатки/движение/etc. одним выражением даже при самой бредовой схеме.
 
 кроме
 
 > разве что убогости субд, не имеющей юнионов и вложенных запросов
 
 По каким причинам автор вопроса не может сделать все одним запросом - это
 уже отдельная проблема, и она автором вопроса не поднималась, поэтому ... ну
 может быть есть на то причиы (да какие угодно, от ограничений диалекта sql
 до скоростных характеристик... ну если оптимизатору по каким-то причинам 2
 запроса съесть быстрее чем один большой, ну не все оптимизаторы совершенны).
 
 Что же касается замечания о том, что если все сделать одним запросом, то
 сразу всем станет существенно легче, то это так же зависит от СУБД с какой
 работает автор вопроса. То, что выполнение запросов select
 распараллеливается не является уже чем-то необычным, и давно. Вероятность
 наступить на фантом даже при выполнении одного запроса  меньше, но не 0.
 Прежде всего надо смотреть, как и когда накладывает блокировки (или что у
 него там есть) сервер. Если блокируется все множество записей, которые может
 запросить запрос, а потом идет выполнение выборок, тогда все может
 прокатить, но не факт что оно так работает. Причина того, что не факт
 простая: или придется блокировать грубо большие блоки данных (первичная
 эскалация блокировки), тогда параллельность выполнения запросов резко
 падает, или выделять точное множество блокирования (набор id записей), а это
 фактически отработка в процессе execute - никуда не денешься, что требует
 времени, и если этот процесс наложения блокировки не прерываем, то пока
 даный запрос не закончит со своим множеством, то все висят и ждут у входа,
 что просадит параллельность выполнения запросов еще сильнее.
 Именно запросы union в данном случае идеальный кандидат на
 распаралеливание - это фактически 2 запроса, которые сливаются в один
 результат в самом конце, значит это очень хороший кандидат на
 распараллеливание выполнения такого запроса, со всем вытекающими
 последствиями. Когда выполнение запроса было непрерываемым (как это и
 предполагается в теории), то вопросов нет, все будет хорошо, но когда запрос
 может распараллеливаться сервером, то ... и теория несколько должна
 измениться. Поэтому и аномалии чтение-запись внутри запроса вообще говоря
 можно получить (в частности фантомы).
 Остается вопрос, обладает и такой особенностью сервер, о котором идет речь
 (автор его забыл назвать), то есть умеет ли распараллеливать запросы, и если
 да, то как. От этого фактора в том числе будет зависить решение вопроса.
 Если уж очень хочется сделать snapshot базы, то выкрутиться можно, даже если
 у сервера такого уровня изолированности нет. придется вводить временные
 метки, то есть хранить данные со временем. Это как обычно имеет свои минусы:
 - сервер должен реализовывать аналог datetime или сам этот тип (зависит от
 вкуса программиста, что больше нравится использовать)
 - в запросы будет по определению входить дополнительное условие на <=
 константа, что влечет дополнительный индекс (его наличие замедлит dml
 операции) и сам поиск по datetime далеко не быстрый по сравнению с теми же
 int.
 Поэтому выбор решения в этот месте тоже может быть не однозначе, вдруг по
 скоростным или каким-то еще характеристикам такое решение не подойдет.
 
 --
 Regards, Lilya Huff
 --- ifmail v.2.15dev5
  * Origin: home (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Отчеты   Igor Kuhtin   21 Aug 2002 13:11:30 
 Re: Отчеты   Denis Gorbunov   21 Aug 2002 19:25:01 
 Re: Отчеты   Vladimir Pavlikov   21 Aug 2002 20:01:47 
 Re: Отчеты   Nik Sestrin   21 Aug 2002 21:29:18 
 Re: Отчеты   Liliya Huff   21 Aug 2002 22:30:04 
 Hа: Отчеты    Sergey Pratch   22 Aug 2002 00:13:36 
 Re: Отчеты   Igor Kuhtin   22 Aug 2002 08:55:08 
 Re: Отчеты   Liliya Huff   23 Aug 2002 07:55:46 
 Re: Отчеты   Tolik Tentser   22 Aug 2002 18:31:39 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 19:52:40 
 Re: Отчеты   Tolik Tentser   23 Aug 2002 18:57:43 
 Re: Отчеты   Vladimir Pavlikov   23 Aug 2002 19:03:48 
 Re: Отчеты   Tolik Tentser   23 Aug 2002 19:34:25 
 Re: Отчеты   Igor Kuhtin   22 Aug 2002 08:49:16 
 Re: Отчеты   Nik Sestrin   22 Aug 2002 18:49:56 
 Hа: Отчеты    Sergey Pratch   22 Aug 2002 20:29:16 
 Re: Hа: Отчеты   Igor Kuhtin   23 Aug 2002 13:36:10 
 Hа: Hа: Отчеты    Sergey Pratch   23 Aug 2002 21:50:26 
 Re: Hа: Hа: Отчеты   Igor Kuhtin   27 Aug 2002 14:52:34 
 Hа: Hа: Hа: Отчеты    Sergey Pratch   28 Aug 2002 13:51:08 
 Re: Hа: Hа: Hа: Отчеты   Igor Kuhtin   28 Aug 2002 18:18:11 
 Hа: Hа: Hа: Hа: Отчеты    Sergey Pratch   29 Aug 2002 01:40:48 
 Re: Hа: Hа: Hа: Hа: Отчеты   Igor Kuhtin   29 Aug 2002 09:33:06 
 Hа: Отчеты    Sergey Pratch   29 Aug 2002 15:29:30 
 Re: Hа: Hа: Hа: Отчеты   Igor Kuhtin   28 Aug 2002 18:04:26 
 Hа: Hа: Hа: Hа: Отчеты    Sergey Pratch   29 Aug 2002 01:40:47 
 Re: Hа: Hа: Hа: Hа: Отчеты   Igor Kuhtin   29 Aug 2002 09:00:30 
 Hа: Hа: Hа: Hа: Hа: Отчеты    Sergey Pratch   29 Aug 2002 15:29:30 
 Re: Hа: Hа: Hа: Отчеты   Michael Skulsky   29 Aug 2002 11:29:02 
 Hа: Hа: Hа: Hа: Отчеты    Sergey Pratch   29 Aug 2002 12:03:39 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 15:46:37 
 Re: Отчеты   Nik Sestrin   22 Aug 2002 18:39:46 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 19:52:40 
 Re: Отчеты   Nik Sestrin   22 Aug 2002 20:06:52 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 20:51:32 
 Hа: Отчеты    Sergey Pratch   22 Aug 2002 22:24:51 
 Re: Отчеты   Vladimir Pavlikov   23 Aug 2002 16:10:28 
 Re: Отчеты   Nik Sestrin   23 Aug 2002 07:17:10 
 Re: Отчеты   Vladimir Pavlikov   23 Aug 2002 16:40:57 
 Re: Отчеты   Nik Sestrin   23 Aug 2002 18:37:22 
 Re: Отчеты   Vladimir Pavlikov   23 Aug 2002 18:53:39 
 Re: Отчеты   Nik Sestrin   23 Aug 2002 19:56:43 
 Re: Отчеты   Vladimir Pavlikov   26 Aug 2002 15:28:47 
 Re: Отчеты   Andrei N. Sobchuck   24 Aug 2002 12:07:46 
 Re: Отчеты   Vladimir Pavlikov   26 Aug 2002 16:25:43 
 Re: Отчеты   Denis Krylov   25 Aug 2002 18:53:46 
 Re: Отчеты   Vladimir Pavlikov   26 Aug 2002 16:25:43 
 Re: Отчеты   Andrew Grachyov   26 Aug 2002 00:19:00 
 Re: Отчеты   Vladimir Pavlikov   26 Aug 2002 16:25:43 
 Re: Отчеты   Tolik Tentser   23 Aug 2002 19:07:53 
 Re: Отчеты   Vladimir Pavlikov   23 Aug 2002 19:50:38 
 Hа: Отчеты    Sergey Pratch   23 Aug 2002 21:50:26 
 Hа: Отчеты    Sergey Pratch   22 Aug 2002 20:29:16 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 20:53:35 
 Hа: Отчеты    Sergey Pratch   22 Aug 2002 00:13:36 
 Re: Hа: Отчеты   Vova Aksionov   22 Aug 2002 07:14:43 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 15:46:37 
 Re: Отчеты   Andrei N. Sobchuck   22 Aug 2002 16:07:00 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 17:14:09 
 Re: Отчеты   Andrei N. Sobchuck   22 Aug 2002 18:13:14 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 19:52:40 
 Re: Отчеты   Andrei N. Sobchuck   23 Aug 2002 09:14:56 
 Re: Отчеты   Vladimir Pavlikov   23 Aug 2002 16:12:29 
 Re: Отчеты   Denis Gorbunov   22 Aug 2002 14:00:47 
 Re: Отчеты   Vladimir Pavlikov   22 Aug 2002 15:46:37 
 Re: Отчеты   Liliya Huff   23 Aug 2002 07:05:04 
 Re: Отчеты   Loki   21 Aug 2002 21:15:04 
 Отчеты   Dzurilo Dmitry   22 Aug 2002 09:59:22 
 Re: Отчеты   Igor Kuhtin   23 Aug 2002 13:31:18 
 Re: Отчеты   Michael Raschepkin   28 Aug 2002 15:40:55 
 Re: Отчеты   Igor Kuhtin   28 Aug 2002 18:15:07 
Архивное /su.dbms/6577c3d1c3d7.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional