powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Что лучше FireBird 2.1 или MS SQL 2000?
25 сообщений из 83, страница 3 из 4
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992502
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BTW, а зачем вообще Борланд сделал этот RC, если всё и так ладненько было с единственным snapshot'ом ? просто "шоб было как в стандарте" ?
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992504
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидПо стандарту стейтмент, стартовавший в RC, должен увидеть все изменения,
зафиксированные другими транзакциями после своего старта ? Да, должен. Ну, и ?
К слову о стандарте:
READ COMMITTED is the default isolation level for SQL Server. It prevents dirty
reads by specifying that statements cannot read data values that have been modified but
not yet committed by other transactions. Other transactions can still modify, insert, or
delete data between executions of individual statements within the current transaction,
resulting in non-repeatable reads, or "phantom" data.
То есть поведение FB вполне стандарту соответствует. Или Ё! опять будет кричать, что
"мартышка не понимает слова "фантом""?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992561
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарыл я тут кое-что в 5CD2-02-Foundation-2006-01.pdf, страница 123 (видимая на "листе" PDF), она же 145 по Ctrl-G.
В тексте определено, что может происходить при каждом из уровней изолированности, но в нём нет явно выраженных требований к тому, что НЕ должно происходить (т.е. что запрещено). А главное, там всё упирается в ["добровольное"] перечитывание транзакцией Т1 данных. Но не указано, что она такое перечитывание непременно обязана делать.5CD2-02-Foundation-2006-01.pdf, pg 145The isolation level specifies the kind of phenomena that can occur during the execution of concurrent SQL-
transactions. The following phenomena are possible :
1) P1 (“Dirty read”): <... skipped ...>
2) P2 (“Non-repeatable read”): SQL-transaction T1 reads a row. SQL-transaction T2 then modifies or delete that row and performs a COMMIT. If T1 then attempts to reread the row, it may receive the modied value or discover that the row has been deleted.
3) P3 (“Phantom”): <... skipped ...>
Таким обр., Оракл в TIL = RC делает это перечитывание, а ФБ - не всегда (закономерность я не выявил, впрочем). Но повторюсь: не вижу в стандарте утверждения, что такая перечитка обязательна!
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992565
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

как обычно, ввечеру ты гонишь. Утром перечитай стандарт и свою писанину.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992568
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrкак обычно, ввечеру ты гонишь. Утром перечитай стандарт и свою писанину.до утра не дотерплю. Сна не будет, пощади!... Говори прямо сейчас, в чём именно бред ? :-)
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992586
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидОракл в TIL = RC делает это перечитывание, а ФБ - не всегда (закономерность я не выявил, впрочем).а, вижу... поправочку, конечно же, надо: ФБ его не делает. Но и не обязан, насколько я понимаю.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992616
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидГовори прямо сейчас, в чём именно бред ? :-)
нет уж, так воспитательного эффекта не будет
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992746
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид Но повторюсь: не вижу в стандарте утверждения, что такая перечитка обязательна!
и не увидишь, нет там этого требования. стандарт писали под блокировочники полностью проигнорировав версионные уровни и здравый смысл. в стандарте на IL RC требуеться считать лишь закомиченную запись, тот же мсскл на RC может вычитать миллион записей, хотя реальнео в таблице их всего пять, просто пока он читает эти пять записей другие транзакции меняют эту запись так, что она "переезжает" в конец таблицы и стейтмент его читает еще раз. и так миллион раз :-)
лажа ? однозначно, зато полностью в соответствии с ANSI стандартом.

а по примеру ты похоже еще путаешь рестарт, который оракл в таком простом примере не делает. в моем примере оракл по SCN видит, что последний блок таблицы изменился после старта стейтмента. никаких рестартов там не происходит, что бы произошел рестарт более сложный предикат нужно сочинить.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992770
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!в моем примере оракл по SCN видит, что последний блок таблицы изменился после
старта стейтмента. никаких рестартов там не происходит
Да-а-а?.. И если в этом изменившемся блоке лежит десять последних записей, включая
свежевставленную, что он будет делать? Неужели телепатически догадается какую из них не
трогать?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992773
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДа-а-а?.. И если в этом изменившемся блоке лежит десять последних записей, включая
свежевставленную, что он будет делать? Неужели телепатически догадается какую из них не
трогать?..

иди пожуй ! ИТ это совсем не твое.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992988
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!делаем IOT таблицу (что бы гарантировать, что пишем в начало и конец)
create table shit (id int primary key, a varchar2(20)) organization index;

загоняем туда млн записей начина с ID=2
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
i int;
begin
for i in 2..1000000
loop
	insert into shit values (i, 'shit-shit-shit-shit') ;
end loop;
end;

сессия1:
update shit set a='updated' where id>0 ;
пока там шуршит

сессия2:
insert into shit values (1,'new') ;
commit;
insert into shit values (1000001,'new') ;
commit;

сколько записей проапдейтит FB ? практически наверняка, проапдейтит 1000001, а 1 оставит нетронутой .А это... как его... в общем, проверил я в Oracle 11.2.0.3.0 (EE). Результат: он тоже НЕ трогает запись, добавленную в начало таблицы.
DDL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create table t(id int primary key, f01 number) organization index;
declare
  i number;
begin
  for i in 2..2000000 loop
    insert into t values(i, i/2);
  end loop;
end;
/
create or replace trigger t_bu before update on t 
begin
    dbms_output.put_line('update started at '||current_timestamp);
end;
/

select min(id) min_id, count(*) from t;

Код: plaintext
1.
2.
3.
4.
5.
table T created.
anonymous block completed
TRIGGER t_bu compiled
MIN_ID COUNT(*)
------ --------
     2  1999999 


Дальше открываю два sqlplus'a.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 session #1 
update t set f01=null where id>0; -- Жамкаем Enter, там будет 15-20 сек молотьба

 session #2  
insert into t values(1, 1000);

1 строка создана.

Затрач.время: 00:00:00.01
commit;

Фиксация обновлений завершена.

Затрач.время: 00:00:00.00

Через примерно 15-20 сек в session #1 :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
update started at 11.10.12 08:46:21.043752000 +04:00
 
1999999  строк обновлено.

Затрач.время: 00:00:16.59
select * from t where id=1;

        ID        F01
---------- ----------
         1       1000

Затрач.время: 00:00:00.01

select count(f01),count(*) from t;

COUNT(F01)   COUNT(*)
---------- ----------
         1    2000000

Затрач.время: 00:00:00.14

ЧЯДНТ ??
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992991
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,
Конечно не тронул, оракл как и полагается увидел таблицу на момент старта стейтмента. Обе записи появились после
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992995
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, апдейт в Oracle также "не видит" и такую запись, которая будет добавлена и закоммичена в конец таблицы (в примере выше - с id=2000001).
Я уж забеспокоился, может в serializable работаю, но нет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
X@Y>;SELECT s.sid, s.serial#,
  2     CASE BITAND(t.flag, POWER(2, 28))
  3        WHEN 0 THEN 'READ COMMITTED'
  4        ELSE 'SERIALIZABLE'
  5     END AS isolation_level
  6  FROM v$transaction t
  7  JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');

       SID    SERIAL# ISOLATION_LEVE
---------- ---------- --------------
         4        557 READ COMMITTED
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37992997
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!оракл как и полагается увидел таблицу на момент старта стейтмента.тьфу, не успел я :-)
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993018
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!оракл как и полагается увидел таблицу на момент старта стейтментаТак, хорошо.
А что тогда происходит у него при serializable ? (я понимаю, что это уже совсем не RC, просто интересно: почему ошибка лезет ?)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 session #1 
set transaction isolation level  serializable ;

 session #2 
insert into t values(1,1000);

 session #1 
update t set f01=null where id>0;

 session #2 
commit;

 session #1 
update started at 11.10.12 09:19:13.819510000 +04:00
update t set f01=null where id>0
*
ошибка в строке 1:
ORA-08177: не могу преобразовать в последов.доступ для этой транзакции
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993061
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТаблоидА что тогда происходит у него при serializable ?
это то о чем мы в контексте ROWDEPENDENCIES говорили, оракл заметив что последний блок меняли, перестраховывается. кляуза ROWDEPENDENCIES выставит SCN на каждую запись, тогда поводов перестраховыватся у оракла не будет
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993089
avp_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, решение для FB вполне очевидно - каждый оператор в RC транзакции при старте должен делать "снимок" TIP (как это делается для снапшотов), чтобы использовать этот снимок в процессе своего выполнения. Но это слишком дорого чтобы делать это с каждым оператором по умолчанию.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993520
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp_каждый оператор в RC транзакции при старте должен делать "снимок" TIP (как это
делается для снапшотов)
И тут во весь рост встаёт вопрос: а нахрена этот оператор вообще выполняется в RC, если
должен работать "как в снапшоте".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993540
avp_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ тут во весь рост встаёт вопрос: а нахрена этот оператор вообще выполняется в RC, если
должен работать "как в снапшоте".


Очевидно чтобы в рамках одной транзации RC атомарно выполнить несколько операторов.
Зачем это может быть нужно - хз.
Возможно нужен костыль чтобы нормально работали клиенты которые не замарачиваются менеджементом транзакций.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993556
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp_Зачем это может быть нужно - хз.
Возможно нужен костыль чтобы нормально работали клиенты которые не замарачиваются
менеджементом транзакций.

Скорее потому, что "взрослые субд" - простые как горшок: у них транзакция или есть или её
сразу нет. А чтобы сразу было целых две транзакции или даже три - не помещается в их
маленькую головку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993791
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидюзают именно RC, как более способствующий производительности.

С какого бы перепугу? Ты эту "разницу в производительности" мерял?

Мерял на тестовых серверах. На MS SQL Server 2008 разница в производительности между read committed и snapshot составляет примерно 7-10%, для системы с которым я работаю. При этом в случае использования snapshot количество транзакций которые долго выполнялись в несколько десятков раз выше по сравнению с read committed. Система занимается биржевой торговлей, характер нагрузки приложения близок к тестам TPC-E.
Snapshot и read_committed_snapshot у нас на всех OLTP серверах отключены, как раз из-за таких результатов тестов.
Думаю именно из-за того что в спецификации TPC-E прописано что количество долго выполняющихся транзакций не должно быть больше определенного уровня, Оракл не участвует в этих тестах. Вероятно не может обеспечить хорошую производительность так как там невозможно отключить версионность.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993856
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andsmМерял на тестовых серверах. На MS SQL Server 2008 разница в производительности между read committed и snapshot составляет примерно 7-10%, для системы с которым я работаю. При этом в случае использования snapshot количество транзакций которые долго выполнялись в несколько десятков раз выше по сравнению с read committed. Система занимается биржевой торговлей, характер нагрузки приложения близок к тестам TPC-E.
Snapshot и read_committed_snapshot у нас на всех OLTP серверах отключены, как раз из-за таких результатов тестов.
Думаю именно из-за того что в спецификации TPC-E прописано что количество долго выполняющихся транзакций не должно быть больше определенного уровня, Оракл не участвует в этих тестах. Вероятно не может обеспечить хорошую производительность так как там невозможно отключить версионность.
я смотрю у некоторых уже пятница наступила
в первом тесте TPC-E майкрософт пыталась без версионности пройти, но похоже нихера не вышло, пришлось майкрософту включать SNAPSHOT и все тесты в TPC-E сделаны с включенной версионностью.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993958
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!в первом тесте TPC-E майкрософт пыталась без версионности пройти, но похоже нихера не вышло, пришлось майкрософту включать SNAPSHOT и все тесты в TPC-E сделаны с включенной версионностью.
Проверил, действительно используется уровень snapshot. Вероятно не смогли решить проблему с консистентностью данных, у нас решение этой проблемы тоже заняло немало времени.
Но все же это не отменяет того, что при решении проблемы консистентности версионность в OLTP системах можно использовать только там, где нет требований к времени прохождения транзакций.
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993979
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andsmНо все же это не отменяет того, что при решении проблемы консистентности версионность в OLTP системах можно использовать только там, где нет требований к времени прохождения транзакций.
вам бы проспаться. крупнейшие OLTP системы мира крутятся на версионном оракле. посмотрите TPC-C. уж тут то вроде блокировочным режимам все карты в руки, мелкие транзакции, транзакции не сталкиваются друг с другом. казалось бы идеальные условия для блокировочников и сплошные неудобства ораклу с его консистентным RC и расходами на UNDO. но в тестах, чего то стабильно заруливает версионный оракл, а не блокировочники
http://oraclemind.blogspot.com/2006/11/tpc-c-oracle-10-vs-mssql2k5.html
...
Рейтинг: 0 / 0
Что лучше FireBird 2.1 или MS SQL 2000?
    #37993981
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andsmэто не отменяет того, что при решении проблемы консистентности версионность в
OLTP системах можно использовать только там, где нет требований к времени прохождения
транзакций.
Не забывай добавлять "на MS SQL 2008". От их способа реализации версионности через
жопу tempdb ничего другого ожидать и не приходится.

PS: Слова "консистентность" и "Read Committed" в одном предложении вообще звучат смешно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 3 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Что лучше FireBird 2.1 или MS SQL 2000?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]