|
|
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Господа, подскажите пожалуйста, гарантирует ли ASE порядок комманд в транзакции, т.е. begin tran insert into table 1 insert into table 2 insert into table 3 commit Будет ли всегда сначала вставка в таблицу 1, потом в таблицу 2 и потом в таблицу 3 или сервер сам решит в каком порядке делать вставку в таблицы. Можно ли как-то повлиять на это? Может кто знает какую-нибудь доку где об этом говорится. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 00:57 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
А вы знаете СУБД по щучьему велению, по своему хотению меняющие порядок поступающих команд? Если говорить об итоговом физическом расположении записей - то теоретически оно может быть каким угодно. Чтобы предугадать, надо досконально знать внутреннюю механику сервера, длину вставляемых записей и предыдущее состояние таблицы, и практически это мало что даст. Сменить порядок вставки искусственно можно с помощью before- или instead-of- триггера, но в ASE этого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 08:33 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Kru гарантирует ли ASE порядок комманд в транзакции В каком порядке написали, в таком и будет! Kru Можно ли как-то повлиять на это? А зачем? sn1251 Сменить порядок вставки искусственно можно с помощью before- или instead-of- триггера, но в ASE этого нет. Уже давно есть insted trigger начиная с ASE 15 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 11:54 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Господа, спасибо за ответ. Вопрос этот прозвучал на собеседовании. До этого я никогда не заморачивался. Если будет возможность, то попробую узнать какой был правильный ответ и обязательно его размещу. Действительно нужно знать, что происходит в мозгах у сервака. Если подумать, то всё, что от него требуется обеспечить вставку в 3 таблицы или ни в одну из них. Дальше он сам может решать, по ходу, дела как быть. Что если, например таблица 1 залочена каким-нибудь процессом, в то время как таблицы 2 и 3 свободны. Можно же сначала добавить записи в таблицы 2 и 3 и потом снова попробовать таблицу 1? Если она к тому моменту освободится, то транзакция пройдёт нормально. Т.е. не сразу сдаваться, а попробовать :-) почему бы и нет. Вот только где-бы узнать про то как реально себя сервер ведёт. Насчёт пятнашки - у нас её пока нет, так что триггеры используем самые обыкновенные. Заранее спасибо за дальнейшие отклики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 17:50 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > Господа, подскажите пожалуйста, гарантирует ли ASE порядок комманд в > транзакции, т.е. Да, гарантирует. Иначе ты бы не смог ни одной программы на транзакте написать. > Будет ли всегда сначала вставка в таблицу 1, потом в таблицу 2 и потом в > таблицу 3 или сервер сам решит в каком порядке делать вставку в таблицы. Будет. Но вот если написать insert into mytable select * from myothertable , и даже добавить ORDER BY, порядок вставки не гарантируется. > Можно ли как-то повлиять на это? Можно, написать INSERT-ы в другом порядке вставки. > Может кто знает какую-нибудь доку где об этом говорится. Ну, это как бы мировые константы. Само собой разумеется. Если этого бы не было, то TSQL не был бы Тьюринг-полным языком, а тогда бы на нём нельзя было бы программировать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 21:46 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > Действительно нужно знать, что происходит в мозгах у сервака. > Если подумать, то всё, что от него требуется обеспечить вставку в 3 > таблицы или ни в одну из них. > Дальше он сам может решать, по ходу, дела как быть. Туд достаточно подумать, а не знать. ПОдумай, как шли бы вставки трёх записей, вторая из которых ссылалась бы на первую по FOREIGN KEY, а третья -- на вторую. Если бы сервер переставлял записи местами, то 0) ты бы не мог проверить последовательно результаты вставок записей. 1) исход транзакции зависил бы от того порядка, в котором сервер бы вставлял записи. В каких -то случаях записи бы вставились, и транзакция завершилась бы, а в других случаях не все записи бы вставились, и транзакции пришлось бы откатиться, а это уже называется несериализуемая транзакция, этого любая ACID-система не может допускать. > Т.е. не сразу сдаваться, а попробовать :-) почему бы и нет. Ага, уже. Я ж говорю, транзакция сериализоваться не будет. > Вот только где-бы узнать про то как реально себя сервер ведёт. Меня спроси Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 21:52 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > Вот только где-бы узнать про то как реально себя сервер ведёт. А, ещё один важный источник информации забыл указать: своей головой подумай. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2009, 21:52 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Кажется, что возможен вариант, когда сервер выполняет команды параллельно - если они не зависят друг от друга. В этом случае возможно что команда 2 завершится до команды 1. Попробую уточнить и напишу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2009, 19:52 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > Кажется, что возможен вариант, когда сервер выполняет команды > параллельно - если они не зависят друг от друга. В этом случае возможно > что команда 2 завершится до команды 1. Комманды одного серверного процесса (одного соединения с сервером) выполняются строго последовательно. Тут и выяснять нечего. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2009, 10:41 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZiv Комманды одного серверного процесса (одного соединения с сервером) выполняются строго последовательно. Тут и выяснять нечего. Мне кажется вопрос требует уточнения. Что есть "выполняются"? Программный код сервера, реализующий данное действие уровня SQL? Или выполнение неким черным ящиком SQL команд? В таком случае, при распараллеливании одного процесса на несколько физических ядер такое запросто возможно. Другое дело, что на SQL уровне это будет выглядеть именно как последовательно. А вот на аппаратном - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2009, 11:53 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Мне кажется вопрос требует уточнения. Что есть "выполняются"? > Программный код сервера, реализующий данное действие уровня SQL? Или > выполнение неким черным ящиком SQL команд? Есть код TSQL, который выполняется, ну скажем, гипотетической виртуальной машиной ASE. Комманды этого кода выполняются строго последовательно. Внутри СУБД следующая комманда не выполняется до тех пор, пока не закончилось выполнение предыдущей комманды. При выполнении одной комманды может происходить всё, что угодно, любое распараллеливание или переупорядочивание кода. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2009, 12:25 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZiv Есть код TSQL, который выполняется, ну скажем, гипотетической виртуальной машиной ASE. Комманды этого кода выполняются строго последовательно. В контексте SQL соединения все так и происходит. Последовательность комманд выполняются по порядку и баста. Но это в контексте соединения. Если же глядеть в ключе непосредственных данных, попадающих на диск, то "гонки возможны". Взять к примеру два устройства хранения данных, один на одном контроллере, другой на другом. Моменты скидывания информации на диск могут сильно отличаться от моментов, рапортуемых контроллерами операционной системе, а тем более от моментов рапортуемых операционной системой к СУБД. Одна табличка в одном устройстве на одном диске, другая в другом. Что уж говорить об иных уровня кэширования, упорядочивания данных, реализованных в RAID массивах и т.п. И такое возможно не только на уровне хранилищ, но и на системной шине и при обменах с памятью. Современное железо очень хитрое и нутро от нас скрыто. MasterZiv Внутри СУБД следующая комманда не выполняется до тех пор, пока не закончилось выполнение предыдущей комманды. При выполнении одной комманды может происходить всё, что угодно, любое распараллеливание или переупорядочивание кода. А это уже известно только разработчикам сервера. И выглядит как домысливание. Мы не знаем (я во всяком случае), как выполняются комманды одним потоком или разными. Возможно во внутренней структуре есть один поток получающий комманды, который на каждую комманду создает отдельный выполняющий поток, или что-то типа того. И тогда каждый поток может обгонять другой, если они не затрагивают одних и тех же данных, в противном случае семафор остановит выполнение одного до завершения другого. Ну теоретически это же возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2009, 13:24 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
ВикипедияТранза́кция (англ. transaction) — в информатике, группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций. И о чем тут спорить? А как сервер это раскручивает, это всем до звезды, и "топикстартеру" я думаю тоже! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2009, 15:13 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Если же глядеть в ключе непосредственных данных, попадающих на диск, то > "гонки возможны". Взять к примеру два устройства хранения данных, один Ты людей-то не пугай. Гонки эти -- внутреннее дело СУБД. И она с ними великолепно справляется. > А это уже известно только разработчикам сервера. И выглядит как > домысливание. Мы не знаем (я во всяком случае), как выполняются комманды > одним потоком или разными. Возможно во внутренней структуре есть один > поток получающий комманды, который на каждую комманду создает отдельный > выполняющий поток, или что-то типа того. И тогда каждый поток может > обгонять другой, если они не затрагивают одних и тех же данных, в > противном случае семафор остановит выполнение одного до завершения > другого. Ну теоретически это же возможно. Ну, ты не знаешь, а я знаю. И это в общем не секрет, написано в документации. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2009, 18:25 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZiv ...И это в общем не секрет, написано в документации. А можно ссылочку если имеется? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 23:56 |
|
||
|
ASE12.5 порядок комманд в транзакции
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > А можно ссылочку если имеется? http://sybooks.sybase.com Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2009, 15:49 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=36261542&tid=2010859]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 254ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...