Мне просто интересно изучать особенности человеческого восприятия действительности. Спасибо за интересный материал.crypto5 wrote:Нет, точный ответ именно на этот вопрос я не знаю.zVlad wrote:Вы вот это называете разобрались:crypto5 wrote:....У нас - ни в чем
У нас все во всем разобрались и все поняли уже
?crypto5 wrote:Вот тут написано что можед быть U: http://publib.boulder.ibm.com/infocente ... lkwhat.htm, если я не ошибаюсь.iDesperado wrote:.....
выглядит, что FOR UPDATE поставит U блокировку которая совместима с S блокировкой которую будет ставить SKIP LOCKED. т.е. SKIP LOCKED из db2/zOS считает залоченные данные.
UPD: а может и IX, я не понимаю этих таблиц. блин ну почему нельзя по человечески хотя бы базовые вещи описать ?
Понятно что я смотрю только CS изоляцию.
Т.е. вы с iDesperado теперь оба считаете что SKIP LOCKED, имеющее смысл только c СS или RS, прочитает модифицированные записи? Так что ли?
А вас почему это интересует?
JP Morgan Chase Oracle database outage
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JP Morgan Chase Oracle database outage
Я думаю что посмотрев на себя со стороны вы узнаете тоже много нового в этом направленииzVlad wrote:Мне просто интересно изучать особенности человеческого восприятия действительности. Спасибо за интересный материал.crypto5 wrote:Нет, точный ответ именно на этот вопрос я не знаю.zVlad wrote:Вы вот это называете разобрались:crypto5 wrote:....У нас - ни в чем
У нас все во всем разобрались и все поняли уже
?crypto5 wrote: Вот тут написано что можед быть U: http://publib.boulder.ibm.com/infocente ... lkwhat.htm, если я не ошибаюсь.
Понятно что я смотрю только CS изоляцию.
Т.е. вы с iDesperado теперь оба считаете что SKIP LOCKED, имеющее смысл только c СS или RS, прочитает модифицированные записи? Так что ли?
А вас почему это интересует?

In vino Veritas!
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: JP Morgan Chase Oracle database outage
Я бы чувствовал себя неуютно сидя на Db2 или Мф - не с технической точки зрения а с точки зрения мобильности. Мест где можно работать всего несколько... Это неважно гуру, который работает 20 лет на одном месте и купил рядом дом. А молодым... Я кстати тоже не реже раза в 4 года меняю работу.
Кроме того, это гарантированно работа в больших компаниях. Я работал в Siemens... У меня нет желания больше работать в фирмах >50-100 человек. ПОтому что если небольшая фирма может набрать талантливых - более или менее - то большая фирма ориентирована на обычных людей. В итоге всегда получается нечто вроде cоветского НИИ.
Вопрос zVlad: а можно посмотреть screenshot того как работает какой нибудь select и выбираются результаты? Для все баз видел, для DB2 не видел...
Кроме того, это гарантированно работа в больших компаниях. Я работал в Siemens... У меня нет желания больше работать в фирмах >50-100 человек. ПОтому что если небольшая фирма может набрать талантливых - более или менее - то большая фирма ориентирована на обычных людей. В итоге всегда получается нечто вроде cоветского НИИ.
Вопрос zVlad: а можно посмотреть screenshot того как работает какой нибудь select и выбираются результаты? Для все баз видел, для DB2 не видел...
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: JP Morgan Chase Oracle database outage
именно. на уровне CSzVlad wrote: Т.е. вы с iDesperado теперь оба считаете что SKIP LOCKED, имеющее смысл только c СS или RS, прочитает модифицированные записи? Так что ли?
SELECT * FROM Tickets WHERE TicketID=@TicketID .... FOR UPDATE
поставит блокировку U, которую
SELECT * FROM Tickets WHERE <condition> SKIP LOCKED DATA
из конкурирующей транзакции без всяких проблем прочитает, т.к. S накладываемая этим запросом совместима с U блокировкой. со всеми вытекающими. это следует из документации.
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
Dmitry67 wrote:Я бы чувствовал себя неуютно сидя на Db2 или Мф - не с технической точки зрения а с точки зрения мобильности. Мест где можно работать всего несколько... Это неважно гуру, который работает 20 лет на одном месте и купил рядом дом. А молодым... Я кстати тоже не реже раза в 4 года меняю работу.
Кроме того, это гарантированно работа в больших компаниях. Я работал в Siemens... У меня нет желания больше работать в фирмах >50-100 человек. ПОтому что если небольшая фирма может набрать талантливых - более или менее - то большая фирма ориентирована на обычных людей. В итоге всегда получается нечто вроде cоветского НИИ.
Вопрос zVlad: а можно посмотреть screenshot того как работает какой нибудь select и выбираются результаты? Для все баз видел, для DB2 не видел...
Я кстати радикально поменял специализацию за последние 10 лет два раза. Сначал я стал DB2 DBA просто потому что у меня был хороший бэкграунд на МФ и интервьюверы были славяне (венгр и чех). И пощти 5 лет назад я из DB2 DBA перквалифицировался в zOS систем программер. А сейчас, кстати, собираюсь осваивать ранее непаханое мной поле под названием CICS. Я уж не говорю о WebSphere, NetView, System Automation, Omegamon и т.д.
Не понимаю как вообще можно показать "как работает какой нибудь select и выбираются результаты". Если по простому то так же как и в других БД. Показать screenshot я не понимаю. Текст select-а Вы имеете в виду? Или план доступа? Или что?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JP Morgan Chase Oracle database outage
Ну так это не модифицированные данные. Когда данные промодифицируются на них наложится эксклюзивный лок, который ни с какими другими локами не совместим.iDesperado wrote:именно. на уровне CSzVlad wrote: Т.е. вы с iDesperado теперь оба считаете что SKIP LOCKED, имеющее смысл только c СS или RS, прочитает модифицированные записи? Так что ли?
SELECT * FROM Tickets WHERE TicketID=@TicketID .... FOR UPDATE
поставит блокировку U, которую
SELECT * FROM Tickets WHERE <condition> SKIP LOCKED DATA
из конкурирующей транзакции без всяких проблем прочитает, т.к. S накладываемая этим запросом совместима с U блокировкой. со всеми вытекающими. это следует из документации.
In vino Veritas!
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: JP Morgan Chase Oracle database outage
основная его идея с помощью FOR UPDATE бронировать, а с помощью SKIP LOCKED отбрасывать забронированное. после модификации он предлагал тут же завершать транзакцию, т.е. экслюзивный лок проживет доли секунды и со SKIP LOCKED явно не пересечется.crypto5 wrote: Ну так это не модифицированные данные. Когда данные промодифицируются на них наложится эксклюзивный лок, который ни с какими другими локами не совместим.
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
Вы наверняка знаете что U блокировка сделана совместимой с S чтобы уменьшить количество дедлоков. Но, в DB2 for zOS, U блокировка не дает права изменять данные, SELECT .... FOR UPDATE вовсе не предполает изменение всех строк резалт сета. Может и ни одна запись не будет изменена этим стэйтментом. Но на те, которые будут изменены будет наложена X блокировка со всеми вытекающими последствиями.iDesperado wrote:именно. на уровне CSzVlad wrote: Т.е. вы с iDesperado теперь оба считаете что SKIP LOCKED, имеющее смысл только c СS или RS, прочитает модифицированные записи? Так что ли?
SELECT * FROM Tickets WHERE TicketID=@TicketID .... FOR UPDATE
поставит блокировку U, которую
SELECT * FROM Tickets WHERE <condition> SKIP LOCKED DATA
из конкурирующей транзакции без всяких проблем прочитает, т.к. S накладываемая этим запросом совместима с U блокировкой. со всеми вытекающими. это следует из документации.
Более очевидный и доходчивый пример для иллюстрации SKIP LOCKED DATA - это чистый UPDATE, или DELETE стэйтменты.
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
Кстати, пока форум лежал, я пошуршал в интернете и обнаружил что за почти пять лет с тех пор как я перестал профессионально заниматься DB2 многое изменилось. Вот две ссылки с короткими сообщениями, где кроме SKIP LOCKED DATA рассматриватся еще один механизм работы с локами, очень напоминающий "локические" локи против которых я тут бьюсь который день:
http://www.dbmag.intelligententerprise. ... =201200471
http://www.craigsmullins.com/zjdp_031.htm
Another DB2 9 improvement is optimistic locking support. With optimistic locking, locks are obtained immediately before a read and then released. Update locks are obtained immediately before an update operation and held until the end of the transaction. Optimistic locking uses the RID and a row change timestamp to test whether data has been changed by another transaction since the last read operation. A row change timestamp, new DB2 9, is an automatically generated timestamp column, defined as follows:
NOT NULL [GENERATED ALWAYS | BY DEFAULT]
FOR EACH ROW ON UPDATE
AS ROW CHANGE TIMESTAMP
http://www.dbmag.intelligententerprise. ... =201200471
http://www.craigsmullins.com/zjdp_031.htm
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
Если Вы имеете в виду вот это описание:iDesperado wrote:основная его идея с помощью FOR UPDATE бронировать, а с помощью SKIP LOCKED отбрасывать забронированное. после модификации он предлагал тут же завершать транзакцию, т.е. экслюзивный лок проживет доли секунды и со SKIP LOCKED явно не пересечется.crypto5 wrote: Ну так это не модифицированные данные. Когда данные промодифицируются на них наложится эксклюзивный лок, который ни с какими другими локами не совместим.
..., то не надо принимать его "близко к сердцу". Я не практикующий программист, как Вы уже наверняка поняли, я лишь бывший DB2 DBA, и как выяснилось с устревшими представлениями (я вместе с вами узнал про SKIP LOCKED DATA пару дней назад). Возможно бронировать надо просто UPDATE.zVlad wrote:........
1. Делаем раз (выбираем "свободные" тикеты на запрошенный рейс):
2. Даем клиенту выбрать интересующий его тикет, и выдаем в ответ на его выбор:Code: Select all
SELECT * FROM Tickets WHERE <condition> SKIP LOCKED DATA
RDBMS накладывает 1 (один) лок на одну строку.Code: Select all
SELECT * FROM Tickets WHERE TicketID=@TicketID .... FOR UPDATE
3. Coобщаем клиенту что у него 15 минут чтобы купить понравившийся ему билет и запускаем счетчик (по времени). Клиент принимает решение. Мы завершаем UPDATE и заканчиваем транзакцию. Локи в количестве 1 (одна) штука удаляется.
....
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JP Morgan Chase Oracle database outage
Я согласен что в своем первом примере с select for update Влад был не прав, но в данной ветке обсуждается уже другой пример.iDesperado wrote:основная его идея с помощью FOR UPDATE бронировать, а с помощью SKIP LOCKED отбрасывать забронированное. после модификации он предлагал тут же завершать транзакцию, т.е. экслюзивный лок проживет доли секунды и со SKIP LOCKED явно не пересечется.crypto5 wrote: Ну так это не модифицированные данные. Когда данные промодифицируются на них наложится эксклюзивный лок, который ни с какими другими локами не совместим.
In vino Veritas!
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: JP Morgan Chase Oracle database outage
И все же, может кто нибудь выложить screenshot с select и результатом - не важно каким - просто интересно как 'выглядит рабочее' место DBA DB2
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
Интструментарий DB2 DBA на МФ это не SQL (хотя и им пользуемся конечно), а главным образом утилиты (реорганизации, бэкапа, рестор, лоад, анлоад, и т.п.) и команды DB2.Dmitry67 wrote:И все же, может кто нибудь выложить screenshot с select и результатом - не важно каким - просто интересно как 'выглядит рабочее' место DBA DB2
Интерфэйс - это терминал IBM 3270, хотя есть не мало GUI тулсов из которых я лично пользовался только Visual Explain (изначально написанный в Visual Age for Smalltalk несколько лет назад переписанный на Java).
Утилиты выполняются как батч задания. Хаускипинг утилиты выполняются по графику, автоматически. У нас есть домашняя разработка выполнения реоргов ночью в автоматическом режиме по заданиям составленным админом в дневное время. Никакого интерфейса практически нет. Текстовым редактором создается задание, представляющее из себя список объектов для реорга и дополнительных, необязательных параметров. Затем выполняется программа (опять же как бат задание), которая делает разнообразные вычисления и готовит развернутое задание сохраняемое в базе данных. Ночью по графику запускается программа (батч) используящая данные созданные предыдущей программой для запуска утилит реорг (батч задания) и управлет их выполнением, а именно анализирует завершение утилит и "подчищает" за ними если надо.
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: JP Morgan Chase Oracle database outage
Хорошо, а если надо вам говорят - а правда что такая то табличка содержит 100 записей и все 2008 года,
то в какой утилите вы будете это смотреть? Где напишете select * from TAB ?
то в какой утилите вы будете это смотреть? Где напишете select * from TAB ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 15421
- Joined: 30 Apr 2003 16:43
- Has thanked: 1 time
Re: JP Morgan Chase Oracle database outage
Кто спросит? (подсказка - у нас есть еще программисты)Dmitry67 wrote:Хорошо, а если надо вам говорят - а правда что такая то табличка содержит 100 записей и все 2008 года,
то в какой утилите вы будете это смотреть? Где напишете select * from TAB ?