TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL <null>
TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL <null>
TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL 87
TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 test 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL 87
TRACE for statement [select * from test2]
Fields:
ID [BIGINT] tf [VARCHAR(10)]
---------------------------------------
1 f_1
2 f_2
3 f_3
4 f_4
TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL 87
TRACE for statement [select * from test2]
Fields:
ID [BIGINT] tf [VARCHAR(10)]
---------------------------------------
1 f_1
2 f_2
3 f_3
4 f_4
Здравствуйте, pnv82, Вы писали:
P>В какой-то момент времени, пользователь видит, что в справочнике номенклатуры ошибка — он открывает карточку соответствующего товара, и в транзакции Т2 исправляет название, после чего коммитит Т2. Заметим, эти изменения справочника должны остаться в БД, даже если пользователь откатит Т1. И только по завершению редактирования документа комитится Т1. P>Т1 и Т2 как раз и есть, то, что называют параллельными транзакциями в этой ветке.
Офигеть, дайте две. Здесь вполне можно открыть второе соединение и там выполнить изменения справочника — какая здесь необходимость в параллельных транзакциях?
P>Так вот, подобный сценарий, в ФБ реализуется в рамках одного соединения, в то время как... P>Говорить, что такой стиль разработки неверен — не стоит, в некоторых случая это более чем адекватно.
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>... Иван, завязывай с линейным мышлением. На улице уже даже не объектно-ориентированное время. В один корпус кучу ядер интегрируют, а ты не можешь понять зачем несколько транзакций засовывают в одной трубе подключения.
Ага, "шизофрения — ваш выбор"
Не вижу связи между запихиванием ядер в один корпус и запихиванием транзакций в одно соединение. Вот она сила гигантов мысли...
Здравствуйте, IZM, Вы писали:
IZM>Я вот только понять не могу зачем смотреть незакоммиченные данные из другой транзакции?
IZM>Пример: IZM>1. Открывается подключение к базе данных Test и начинается транзакция. Уровень ее изоляции по умолчанию ReadCommitted IZM>2. Открывается еще одно подключение и начинается еще одна транзакция. Уровень ее изоляции сделаем ReadUncommitted. IZM>3. Из первой транзакции вставляется строка в таблицу Cat_Contr (контр агента добавили) коммит не делаем — может нам такой контр не нужен или это просто бухгалтер свои знания тестирует IZM>4. Из второй транзакции выполняется чтение этой строки (Уровень изоляции позволяет читать незакоммиченные данные), далее их можно использовать дальше в других таблица. Но если первая транзакция сделает откат — целостность и согласованность данных можно потерять.
IZM>Если Вы хотите осложнять себе жизнь — пожалуйста
Интересно — а кто себе жизнь осложняет с помощью ReadUncommitted? Если я правильно напряг свои мозги то такого в IB/FB просто нет. И никто не смотрит незакомиченные данные ни в одном примере. Выборка и фетч делаются по ЗАКОМИЧЕННЫМ данным, т.е. они есть в БД, а в каком состоянии стартует транзакция на выборку мне например глубоко по барабану (тем более что можно и в SNAPSHOT стартовать ее, если делать запись данных в другой транзакции).
Вообще почитал, и мне стало интересно — а те кто пишут про просмотр "незакомиченных" данных при обычном селекте хоть что-нибудь про транзакции IB/FB знают или нет? Похоже что нет.
Вопрос на засыпку — какие типы транзакций существуют в IB/FB. Кто из тех кто против IB/FB сможет ответить? Или просто не знаете?
Здравствуйте, mmaxx, Вы писали:
M>Знаю, что тема не нова, но время не стоит на месте...
M>Может, насоветуете альтернативную СУБД: M>* бесплатная; M>* параллельные транзакции; M>* хранимые процедуры, триггеры; M>* защита от юзверя (что раздражает в Firebird — так это божественное всемогущие SYSDBA).
Интересно, а поменять всемогущего никак не пробовали? Или это бог неменяемый?
И чем FB не устраивает? Религия не позволяет? Причины есть которые обусловили такой вопрос?
Здравствуйте, _d_m_, Вы писали:
___>Офигеть, дайте две. Здесь вполне можно открыть второе соединение и там выполнить изменения справочника — какая здесь необходимость в параллельных транзакциях?
Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение?
Здравствуйте, IB, Вы писали:
IB>"(2) меняет данные на основании фетча из (1)" — означает, что (2) имеет доступ к незафиксированным данным из (1). Или есть какая-то другая, недоступная мне интерпретация данной фразы?
Простите за нескромный вопрос, вы знаете, что такое фетч? Если знаете, тогда объясните пожалуйста, какие в нем могут быть незафиксированные данные?
SM>> Так что пока я никак не могу увидеть, как транзакция (2) видит незафиксированные данные из (1). IB>(2) видит данные из (1) в процессе работы (1) (до того как (1) зафиксировалась), это означает, что (2) видит незафиксированные данные (1) так как дать гарантию, что данные в (1) не менялись в процессе ее работы, никто не может.
Как так никто не может? А кто код программы, позвольте спросить, пишет? Генератор случайных чисел?
SM>> В транзакции (1) данные были зафетчены (забраны с сервера). Причем данные на состояние старта (1). IB>Что мешает в момент старта (1) забрать данные с сервера и зафиксировать эту транзакцию, а потом начинать работать с (2)? Зачем держать транзакцию открытой, если по твоим же словам "commit/rolback (1) (не имеет значения, модификации не проводились)"? IB>Что-то ты со своим примером сам запутался...
Кто же спорит, можно и так. Только почему вы позволяете себе утверждать, что если определенная задача в сервере X может быть решена способами A и B, а в сервере Y только способом B, то значит сервер X некошерный и способ A права на существование не имеет? Или разнообразие возможностей выполнения задачи с некоторого время является недостатком программы?
P.S. Только маленькая просьбочка... не нужно больше аргумента про "изнурительную многопоточность"... мы вчера полдня из под стола вылезти не в силах были, а нам работать надо...
A>Интересно, а поменять всемогущего никак не пробовали? Или это бог неменяемый? A>И чем FB не устраивает? Религия не позволяет? Причины есть которые обусловили такой вопрос?
Что-то я Вас недопонимаю... Куда Вы денетесь от SYSDBA? Если клиент не знает его пароля, он свободно переустановкой СУБД решит эту проблему и база как на ладони.
Ну а во-вторых, т. н. "параллельные транзакции" не поддерживаются его Data Provider-ом.
PS По божественным и религиозным вопросам Вы ошиблись форумом.
Здравствуйте, mmaxx, Вы писали:
A>>Интересно, а поменять всемогущего никак не пробовали? Или это бог неменяемый? A>>И чем FB не устраивает? Религия не позволяет? Причины есть которые обусловили такой вопрос?
M>Что-то я Вас недопонимаю... Куда Вы денетесь от SYSDBA? Если клиент не знает его пароля, он свободно переустановкой СУБД решит эту проблему и база как на ладони.
как это переустановка СУБД решит эту проблему???
для смены пароля нужно или присоедениться к БД под SYSDBA и тогда поменять пароль или пересоздать БД и перелить в неё данные, для чего нужно присоедениться с БД снять метаданные, выгрузить данные и все это можно только под учетной записью того, у кого есть права на все эти операции, и это у многих не SYSDBA M>Ну а во-вторых, т. н. "параллельные транзакции" не поддерживаются его Data Provider-ом.
ну так затянувшаяся на третий день дисскусия по моему явно показала, что "паралельных" транзакций нет ни у каких серверов под НЕТ M>PS По божественным и религиозным вопросам Вы ошиблись форумом.
[Sorry, skipped] I> ну так затянувшаяся на третий день дисскусия по моему явно показала, I> что "паралельных" транзакций нет ни у каких серверов под НЕТ
А спецификацией NET-провайдеров они предусмотрены?
Я не в курсе просто.
В спецификации OLE DB, их есть.
Здравствуйте, Ramzzes, Вы писали:
R>Здравствуйте, _d_m_, Вы писали:
___>>Офигеть, дайте две. Здесь вполне можно открыть второе соединение и там выполнить изменения справочника — какая здесь необходимость в параллельных транзакциях?
R>Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение?
I_>как это переустановка СУБД решит эту проблему??? I_>для смены пароля нужно или присоедениться к БД под SYSDBA и тогда поменять пароль или пересоздать БД и перелить в неё данные, для чего нужно присоедениться с БД снять метаданные, выгрузить данные и все это можно только под учетной записью того, у кого есть права на все эти операции, и это у многих не SYSDBA
Продолжаю утверждать, что к базе на клиентской машине можно запросто получить полный доступ.
M>>PS По божественным и религиозным вопросам Вы ошиблись форумом. I_>что-же у всех с юмором I_>Удачи
Здравствуйте, kuj, Вы писали:
R>>Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение? kuj>Бритву Оккама
Пытаемся задавить интеллехтом? Напомню, форум по программированию, а не по толкованию философских принципов.
Вижу три критерия определения преимуществ:
— Наличие возможности.
— Удобство использования.
— Расход ресурсов.
Возможно кто-то добавит еще.
По существу дела есть что сказать? Без философских терминов?
Здравствуйте, mmaxx, Вы писали:
M>Может, насоветуете альтернативную СУБД:
Как уже было предложено: SQL Server 2005 Express (повторюсь) M>* бесплатная;
да M>* параллельные транзакции;
(есть). если я правильно понял, то нужно это:
BEGIN TRAN T1
UPDATE table1 ...
BEGIN TRAN M2 WITH MARK
UPDATE table2 ...
SELECT * from table1
COMMIT TRAN M2
UPDATE table3 ...
COMMIT TRAN T1
M>* хранимые процедуры, триггеры;
есть и хранимки и тригеры и функции... M>* защита от юзверя (что раздражает в Firebird — так это божественное всемогущие SYSDBA).
чет не совсем понятен вопрос... Но, в MSSQLServere есть возможность работать как от имени пользователя сервера, так и от пользователя виндовс(настроить можно на групу пользователей винды)...
Здравствуйте, mmaxx, Вы писали:
I_>>как это переустановка СУБД решит эту проблему??? I_>>для смены пароля нужно или присоедениться к БД под SYSDBA и тогда поменять пароль или пересоздать БД и перелить в неё данные, для чего нужно присоедениться с БД снять метаданные, выгрузить данные и все это можно только под учетной записью того, у кого есть права на все эти операции, и это у многих не SYSDBA
M>Продолжаю утверждать, что к базе на клиентской машине можно запросто получить полный доступ.
Вы вероятно имели ввиду работу с embedded версией в первую очередь? Так там вобще без пароля можно подключиться, проверка не проводится. Но это частный случай, и он сделан СПЕЦИАЛЬНО. А по поводу сервиса — насколько я помню работы в этом направлении ведутся. И никто не спорит что базу имея ее на руках можно открыть с помощью embedded версии или своим сервером. Но с другой стороны это и хорошо. А если Вы работаете в большой конторе, то кто вам мешает закрыться административно от хакеров? Есть рекомендации по работе с БД, и SYSDBA там указан, т.е. что с ним делать.
P.S. Сохранность информации можно достичь и другими способами, и никто не спрашивал как. А раздражение на SYSDBA надо было просто направить в русло смены его над другого, и все... Т.е. данная претензия просто непонятна, она показывает что Вы работал с БД не пытаясь углубиться в описания что и как делать. Попытка закрыть БД от пользователя не есть удобная вещь, т.к. если это программа на продажу Вас потом юзвери сьедят, если для внутреннего пользования — то совсем непонятно почему этот вопрос возник — административные рычаги никто не отменял.
Здравствуйте, Ramzzes, Вы писали:
R>>>Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение? kuj>>Бритву Оккама
R>Пытаемся задавить интеллехтом? Напомню, форум по программированию, а не по толкованию философских принципов.
R>Вижу три критерия определения преимуществ: R>- Наличие возможности.
Возможность не есть преимущество. Я потому и упомянул принцип бритвы оккама.
R>- Удобство использования.
Спорно. У нас в проектах, например, повсеместно используется NHibernate. Он сам заботится о корректной организации транзакций.
R>- Расход ресурсов.
Опять же, весьма спорно. Если только Вы не выполняете десятки и сотни параллельных транзакций, а если выполняете... кхм, возможно стоит подумать об изменении архитектуры?
Во всех других случаях достаточно простейшего пулла соединений.
Здравствуйте, Ramzzes, Вы писали:
R> Если знаете, тогда объясните пожалуйста, какие в нем могут быть незафиксированные данные?
Очень просто. Фетчим данные на клиента, потом их меняем (те, которые отфестчили на клиента — неужели это так сложнопонять?), потом этими измененными данными пользуется другая транзакция.
R>Как так никто не может?
А вот так.
R> А кто код программы, позвольте спросить, пишет? Генератор случайных чисел?
Как правило генератор случайных чисел предсказуемее.
R> Только почему вы позволяете себе утверждать, что если определенная задача в сервере X может быть решена способами A и B, а в сервере Y только способом B, то значит сервер X некошерный и способ A права на существование не имеет?
Я утверждаю, что способ X — не кошерный, вне зависимости от сервера. Почему — я пытался объяснить неоднократно.
Возможно несколько коротко, но ребята объяснений было более чем достаточно и вообще я уже сутки как в отпуске.
R>мы вчера полдня из под стола вылезти не в силах были, а нам работать надо...
Нет, ребята, не вылезайте, лучше не надо.
Здравствуйте, SmlMouse, Вы писали:
SM> Ты думаешь, ответы будут различаться?
Понятия не имею, я же его спрашивал.
SM> Или меня боишься?
Есть чего?
SM> Ты уже показал, что за рамки своего опыта не можешь выйти даже мысленно.
Думаешь есть необходимость?
SM> Ну так его ещё и проектировать нужно под другие серваки.
Нда, я подозревал, что разработчики IB ленивее чем надо и н еучатся даже на положительном опыте..