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


su.dbms

 
 - SU.DBMS ----------------------------------------------------------------------
 From : Vladimir Pavlikov                    2:5020/400     26 Dec 2002  17:44:26
 To : Dmitry V. Liseev
 Subject : Re: Синхpонизация доступа к БД
 -------------------------------------------------------------------------------- 
 
 Hello, Dmitry V. Liseev!
 You wrote to Dmitri Zakharov on Tue, 24 Dec 2002 20:11:40 +0000 (UTC):
 
  DVL> С этим я поигрался. Проблема в том, что обычно для выполнения некой
  DVL> функции сервер приложений делает несколько запросов к серверу БД,
  DVL> из которых часто сначала идет несколько SELECT'ов, на основе
  DVL> прочитанных данных принимается решение, затем идет несколько
  DVL> INSERT/UPDATE/DELET'ов. Это все в одной транзакции происходит. В
  DVL> течение этого процесса кто-то второй делает короткую операцию над
  DVL> некими данными и делает commit.
  DVL> Сервер БД в этот момент еще не знает, что первая транзакция также
  DVL> собирается потом читать эти-же данные. Соответственно он говорит
  DVL> второму, что его транзакция успешно закоммичена. Когда СУБД
  DVL> выяснит, что первая транзакция собирается читать эти-же данные, ее
  DVL> продолжение станет бессмысленным, т.к. snapshot, сделанный на
  DVL> момент начала первой транзакции уже устарел и первая транзакция
  DVL> рискует принять решение на основе устаревших данных. Жить
  DVL> становится интереснее, когда данные не просто меняются, а
  DVL> появляются или удаляются
 
 snapshot все же наиболее подходит для длинный согласованных чтений.
 Все модификации желательно делать максимально короткими транзакци-
 ями, для подавляющего большинства которых достаточно уровня rc.
 
  DVL> Предположим, есть некое дерево папок. То есть каждая папка имеет
  DVL> FK, ссылающийся на родительскую папку.
  DVL> Есть некий справочник информации, связанной с этими папками
  DVL> (Таблица, где каждая запись имеет FK папки).
  DVL> Первый пользователь запускает операцию удаления папки, сервер
  DVL> приложений стартует транзакцию и начинает рекурсивно удалять все
  DVL> вложенные папки и связанную с ними информацию из справочников.
  DVL> Второй пользователь пытается создать новую папку где-то в глубине
  DVL> иерархии.
 
 Очень похоже на бессмыслицу, сорри. Я имею ввиду не у тебя, а у
 пользователей. Трудно найти смысл в удалении папок, если другому
 нужна одна из них в _то же самый момент_. Такие вещи могут (и должны)
 решаться только на административном уровне, у пользователя. Ты же
 максимум что можешь сделать - select for update. Тогда на данные,
 подпадающие под условие запроса, будет наложена блокировка, и
 второй пользоватеь получит "отлуп". Hо я вовсе не уверен, что
 это хорошо - ведь будет удалена (первым) _нужная ему_ папка.
 Поэтому - только административным путем, select for update - это
 средство "послать" заказчика, ткнув его носом типа "у меня
 проблем нет" :)
 
  DVL> В таком случае получается, что этот snapshot должен помнить не
  DVL> только какие данные были на момент начала транзакции, но и каких
  DVL> данных еще небыло.
 
 Тогда это не snapshot, а rc.
 
  DVL> Он что, полную копию всей БД для каждой транзакции создает?
 
 Можно сказать и так. Hе физически, конечно. Просто при любой
 модификации остается еще и старая версия, и транзакции доступна
 только она. Разумеется, она "видит" записи, удаленные после ее
 старта, и не видит добавленных - речь действительно идет о
 _мгновенном_ снимке базы.
 
  DVL> А если внутри транзакции не просто записи добавляются, а
  DVL> создаются или удаляются целые таблицы, триггера или констрейны?
 
 Без разницы.
 
  DVL> Следуя подобной логике получается, что большое количество коротких
  DVL> транзакций должны сделать ничтожно малой вероятность успешного
  DVL> прохождения хоть и редких, но длинных транзакций.
 
 Hет. Если длинной транзакции не нужен снимок - она отработает по
 данным "как есть". Если нужен - тогда snapshot "заморозит" базу.
 А осмысленную работу при бессмысленном использовании обеспечить
 невозможно, да и не нужно.
 
  DVL> Единственный выход - иметь некий способ руками указать блокируемые
  DVL> данные еще в самом начале транзакции до фактического к ним
  DVL> обращения, чтобы еще в начале длинной операции сервер точно знал,
  DVL> какие данные потребуются в ее ходе, тогда короткие транзакции,
  DVL> которые заявят блокировку этих-же данных, будут приостановлены.
 
 Как указано выше - select for update. Там же написано, что это
 "затычечный" способ прикрытия собственной ж. Любая совместная
 работа _д.б._ организована, иначе вреда от нее больше, чем пользы...
 
 ---------------------------------------------
           Владимир Павликов.
 -- 
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.Mail.Ru (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Синхронизация доступа к БД   Dmitry V. Liseev   23 Dec 2002 21:20:17 
 Re: Синхронизация дос тупа к БД   Sergey Vlasov   23 Dec 2002 21:45:17 
 Re: Синхронизация дос тупа к БД   Sergey Prach   24 Dec 2002 02:07:46 
 Re: Синхронизация дос тупа к БД   Andrew Lesnichenko   24 Dec 2002 12:36:45 
 Re: Синхронизация дос тупа к БД   Sergey Prach   24 Dec 2002 16:27:17 
 Re: Синхронизация дос тупа к БД   Vladimir Pavlikov   24 Dec 2002 16:57:23 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   23 Dec 2002 22:32:36 
 Re: Синхронизация доступа к БД   Sergey Prach   24 Dec 2002 02:07:46 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   24 Dec 2002 17:16:44 
 Re: Синхронизация доступа к БД   Sergey Prach   25 Dec 2002 00:58:39 
 Re: Синхронизация доступа к БД   Dmitry Kuzmenko   26 Dec 2002 16:01:16 
 Re: Синхронизация доступа к БД   Oleg Bokanov   26 Dec 2002 16:31:01 
 Re: Синхронизация доступа к БД   Sergey Prach   26 Dec 2002 17:23:29 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 17:44:27 
 Re: Синхронизация доступа к БД   Dmitry Kuzmenko   26 Dec 2002 17:39:52 
 Re: Синхронизация доступа к БД   Sergey Prach   27 Dec 2002 03:16:01 
 Re: Синхронизация доступа к БД   Dmitry Kuzmenko   08 Jan 2003 15:13:39 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 18:44:25 
 Re: Синхронизация доступа к БД   Sergey Prach   27 Dec 2002 03:16:01 
 Re: Синхронизация доступа к БД   Dmitry Novikov   27 Dec 2002 14:18:44 
 Re: Синхронизация доступа к БД   Sergey Prach   27 Dec 2002 16:49:12 
 Re: Синхронизация доступа к БД   Ilya Zvyagin   27 Dec 2002 17:10:11 
 Re: Синхронизация доступа к БД   Dmitry Novikov   27 Dec 2002 17:35:43 
 Re: Синхронизация доступа к БД   Sergey Prach   28 Dec 2002 00:12:49 
 Re: Синхронизация доступа к БД   tengiz.kharatishvili   28 Dec 2002 02:21:31 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   04 Jan 2003 19:11:00 
 Re: Синхронизация доступа к БД   Sergey Prach   05 Jan 2003 01:29:32 
 Re: Синхронизация доступа к БД   Liliya Huff   05 Jan 2003 04:53:40 
 Re: Синхронизация доступа к БД   Sergey Prach   05 Jan 2003 14:10:14 
 Re: Синхронизация доступа к БД   Liliya Huff   06 Jan 2003 22:42:14 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   09 Jan 2003 19:27:13 
 Re: Синхронизация доступа к БД   Dmitry Kuzmenko   08 Jan 2003 14:40:44 
 Re: Синхронизация доступа к БД   Tolik Tentser   30 Dec 2002 20:16:04 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   04 Jan 2003 19:11:00 
 Re: Синхронизация доступа к БД   Tolik Tentser   04 Jan 2003 19:55:40 
 Re: Синхронизация доступа к БД   Ilya Zvyagin   25 Dec 2002 11:20:12 
 Re: Синхронизация доступа к БД   Dmitry Kuzmenko   26 Dec 2002 15:56:07 
 Re: Синхронизация доступа к БД   Ilya Zvyagin   27 Dec 2002 17:03:32 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 18:44:24 
 Re: Синхронизация доступа к БД   Liliya Huff   26 Dec 2002 20:29:23 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 20:56:05 
 Re: Синхронизация доступа к БД   Liliya Huff   26 Dec 2002 22:04:15 
 Re: Синхронизация доступа к БД   Sergey Prach   24 Dec 2002 02:07:41 
 Синхpонизация доступа к БД   Dmitri Zakharov   24 Dec 2002 11:00:57 
 Re: Синхpонизация доступа к БД   Dmitry V. Liseev   25 Dec 2002 00:11:40 
 Re: Синхpонизация доступа к БД   Oleg Bokanov   25 Dec 2002 12:13:22 
 Re: Синхpонизация доступа к БД   Sergey Prach   25 Dec 2002 12:39:06 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 17:44:26 
 Re: Синхpонизация доступа к БД   Oleg Bokanov   26 Dec 2002 18:21:05 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 20:01:48 
 Re: Синхpонизация доступа к БД   Oleg Bokanov   26 Dec 2002 20:30:25 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 20:56:04 
 Re: Синхpонизация доступа к БД   Oleg Bokanov   26 Dec 2002 21:52:59 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   04 Jan 2003 18:15:13 
 Re: Синхpонизация доступа к БД   Tolik Tentser   30 Dec 2002 20:27:44 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   04 Jan 2003 18:15:14 
 Re: Синхpонизация доступа к БД   Tolik Tentser   04 Jan 2003 20:15:03 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   04 Jan 2003 21:19:54 
 Re: Синхpонизация доступа к БД   Tolik Tentser   08 Jan 2003 20:10:44 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   09 Jan 2003 19:40:22 
 Re: Синхpонизация доступа к БД   Tolik Tentser   09 Jan 2003 20:32:32 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   10 Jan 2003 17:39:59 
 Re: Синхpонизация доступа к БД   Tolik Tentser   10 Jan 2003 19:53:45 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   13 Jan 2003 18:28:09 
 Re: Синхpонизация доступа к БД   Tolik Tentser   13 Jan 2003 20:19:36 
 Re: Синхpонизация доступа к БД   Artem Khomenko   14 Jan 2003 23:36:00 
 Re: Синхpонизация доступа к БД   Dankov   15 Jan 2003 16:19:21 
 Re: Синхpонизация доступа к БД   Vova Aksionov   05 Jan 2003 10:56:12 
 Re: Синхpонизация доступа к БД   Sergey Prach   05 Jan 2003 14:10:14 
 Re: Синхpонизация доступа к БД   Vova Aksionov   05 Jan 2003 14:34:10 
 Re: Синхpонизация доступа к БД   Tolik Tentser   08 Jan 2003 20:12:16 
 Re: Синхpонизация доступа к БД   Vova Aksionov   05 Jan 2003 10:52:38 
 Re: Синхpонизация доступа к БД   Vladimir Pavlikov   09 Jan 2003 19:27:12 
 Re: Синхронизация доступа к БД   Ilya Zvyagin   24 Dec 2002 10:56:07 
 Re: Синхронизация доступа к БД   Dmitry V. Liseev   25 Dec 2002 00:11:41 
 Синхpонизация доступа к БД   Dmitri Zakharov   25 Dec 2002 11:18:52 
 Re: Синхронизация доступа к БД   Ilya Zvyagin   25 Dec 2002 11:42:39 
 Re: Синхронизация доступа к БД   Vladimir Pavlikov   26 Dec 2002 18:44:24 
Архивное /su.dbms/6488c14cf19f.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional