powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Почему ораклисты так не любят MS SQL?
25 сообщений из 457, страница 4 из 19
Почему ораклисты так не любят MS SQL?
    #33377139
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Но случилось так, что связали их именно Вы, создав топик со словом "Oracle", написав внутри в том числе про Oracle, и закончив примерно следующим: "я ни хрена не понял написанное вице-президентом Oracle (или кто он там), а потому хочу проявить к нему недружественность".

С каких пор у вас появилась отвратительная привычка передергивать факты и присваивать людям высказывания, которых небыло ?
Был топик про Оракл и Yukon. В его конце было четко написано : "Offtopic", что в переводе на русский (если вдруг кто не знает), означает - отклонение от первоначальной темы. В этом оффтопике было написано про манеру Кайта писать книги. Никакой "связки" Оракла с Кайтом там нет.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377142
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За исключением того, что Кайт один из наиболее известных и уважаемых апологетов Oracle
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377156
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Пока вижу только бардак в плане постановки задачи

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE DOCUMENT_TYPE(TYPE_ID NUMBER PRIMARY KEY, COUNT NUMBER);

CREATE TABLE DOCUMENT (DOCUMENT_ID NUMBER PRIMARY KEY, TYPE_ID NUMBER REFERENCES DOCUMENT_TYPE(TYPE_ID));

CREATE TABLE FORMAT (FORMAT_ID PRIMARY KEY);

CREATE TABLE FORMAT_DOCUMENT(DOCUMENT_ID NUMBER REFERENCES DOCUMENT(DOCUMENT_ID), FORMAT_ID NUMBER REFERENCES FROMAT(FORMAT_ID), PRIMARY KEY(DOCUMENT_ID, FORMAT_ID))

Требуется сделать ограничение: количество записей для каждого документа в таблице FORMAT_DOCUMET не должно превышать COUNT из таблицы DOCUMENT_TYPE. Сделать без использования блокировок любого типа. Если не получится сделать без блокировок - объяснить, почему не получилось.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377183
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Gluk (Kazan)
Пока вижу только бардак в плане постановки задачи
По моему человек пытается спросить, как с фантомными аномалиями бороться на уровне snapshot. Если я правильно понял, конечно.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377191
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Завести поле-счетчик в DOCUMENT_TYPE
2. Обновлять его при добавлении документа и сравнивать с COUNT
в триггере уровня строки
3. Если значение COUNT превышено, бросать исключение

Требование по поводу отсутствия блокировок напоминает распоряжение о том чтобы отныне Солнце восходило на западе. DML-операторы будут блокировать свои данные как обычно

P.S. И не стоит азывать поле COUNT, если Вы конечно не любитель гемороя
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377193
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП2 Gluk (Kazan)
Пока вижу только бардак в плане постановки задачи
По моему человек пытается спросить, как с фантомными аномалиями бороться на уровне snapshot. Если я правильно понял, конечно.

Являются ли они аномалиями для версионника, вот в чем вопрос ?
Человек явно не знает таких сложных слов ;)
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377207
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)1. Завести поле-счетчик в DOCUMENT_TYPE
2. Обновлять его при добавлении документа и сравнивать с COUNT
в триггере уровня строки
3. Если значение COUNT превышено, бросать исключение

Требование по поводу отсутствия блокировок напоминает распоряжение о том чтобы отныне Солнце восходило на западе. DML-операторы будут блокировать свои данные как обычно

P.S. И не стоит азывать поле COUNT, если Вы конечно не любитель гемороя

Идея ясна. Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести. И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик. А Вы забыли. Так что Ваше решение неработоспособно. Так как десять транзакций будут иметь свои снимки данных, не видя того, что вставили другие транзакции. И после фиксации данных и счётчик неправильный будет и ограничение не выполнится.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377221
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Являются ли они аномалиями для версионника, вот в чем вопрос ?

Версионник может позволить себе работать непредскузуемым образом - это не вопрос!
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377225
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП2 Gluk (Kazan)По моему человек пытается спросить, как с фантомными аномалиями бороться на уровне snapshot. Если я правильно понял, конечно.

Речь идёт не только о фантомных аномалиях. Это был не вопрос, а пример. При версионности невозможно не только с фантомными аномалиями бороться, но и вообще управлять логикой программы на основе данных, взятых из базы. У меня есть и другие примеры. Этот самый наглядный.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377228
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Являются ли они аномалиями для версионника, вот в чем вопрос ?
Человек явно не знает таких сложных слов ;)
Аномалии являются аномалиями независимо от того, версионник это, блокировочник, или вообще гибрид. И независимо от того, какие слова человек знает. Аномалии либо могут встречаться на тех уровнях изоляции, которые поддерживаются сервером, либо не могут.
На оракловом serializable (который snapshot) фантомы возможны, если не предпринимать дополнительных телодвижений. Если я не прав, то спецы меня поправят.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377231
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAС другой стороны по Кайту (и не только) на Оракле нужно применять связанные переменные, MS SQL не озависит от этого. Хотя тестов не устраивал
Не совсем так.

Как работает Oracle: в нормальном режиме он делает именно то, что ему сказал программист. Если дан запрос вида

Код: plaintext
where a = :a and b =  1 

сервер построит план для "b = 1, a - любое" и будет использовать его для последующих аналогичных запросов. Для запроса вида

Код: plaintext
where a = :a and b =  2 

он построит другой план. Таким образом, программист имеет возможность гибко выбрать, что ему важнее - неоднородность данных (построение разных планов для разных b) либо экономия на перестроении плана (объединение по a). На это накладываются дополнительные моменты.

Как одна из возможностей исправить на сервере ошибки программистов клиента, есть режим cursor_sharing. При этом оба предыдущих запроса автоматом "параметризуются", то есть при разборе первого будет построен план для

Код: plaintext
where a = :a and b = :b

и этот план будет повторно использован для второго запроса. Таким образом, для плохо написанного клиента это даст выигрыш в производительности, в то же время для хорошо написанного - проигрыш.

Как работает MS SQL (насколько я понял Merle): он работает в целом близко ко второму (cursor_sharing) режиму работы Oracle. Понятие bind variables там практически отсутствует; существует некий барьер, критическое число, после которого сервер решает, что у него "слишком много похожих планов" и сжимает их в один общий. Кроме того, существуют какие-то (непонятные мне) отличия в случае того, выполняется ли запрос из хранимой процедуры или передан непосредственно.

Итого, получается следующее: в случае Oracle существует возможность гибкой настройки каждого конкретного запроса. Ценой этого является возможность создания плохо написанного приложения, что (снаружи; без исправления приложения) может быть скорректировано только весьма грубой кувалдой. MSSQL более адаптивен, пытается подстроиться под стиль запросов приложения; ценой этого является невозможность тонкой регулировки и, возможно, регулярно упоминаемая меньшая эффективность запросов, не упакованных в хранимки.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377239
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkSquid[quot Gluk (Kazan)]Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести.

И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик.


Бред

авторВерсионник может позволить себе работать непредскузуемым образом - это не вопрос!

Как я уже сказал, то что Вы не понимаете как ведет себя сервер, не означает, что он ведет себя непредсказуемо

С "ТЗ" у Вас тоже каша в голове, как и было сказано
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377241
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) DarkSquid[quot Gluk (Kazan)]Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести.

И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик.


Бред


Сам ты бред. Не веришь - проверь.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377245
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Как я уже сказал, то что Вы не понимаете как ведет себя сервер, не означает, что он ведет себя непредсказуемо


Прошу прощения, но это Вы не понимаете, как ведёт себя сервер.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377247
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 DarkSquid
Речь идёт не только о фантомных аномалиях. Это был не вопрос, а пример.
Пример так пример. Не вопрос :).

При версионности невозможно не только с фантомными аномалиями бороться
Однако ж люди как-то борются.

но и вообще управлять логикой программы на основе данных, взятых из базы.
Еще более сильное утверждение. Думаю, что и еще более неправильное.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377249
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПНа оракловом serializable (который snapshot) фантомы возможны, если не предпринимать дополнительных телодвижений. Если я не прав, то спецы меня поправят.

Вы правы, если подобные аномалии недопустимы в Вашей задаче, следует совершать "дополнительные телодвижения".
Теперь расскажите, как построить версионник без подобных аномалий и без отвратительных просадок по производительности при блокировании диапазонов ключей с соотвественно увеличивающеся вероятностью deadlock-ов ???
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377252
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП При версионности невозможно не только с фантомными аномалиями бороться
Однако ж люди как-то борются.

Они борются идеологически. В вере их сила.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377254
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkSquid Gluk (Kazan)Как я уже сказал, то что Вы не понимаете как ведет себя сервер, не означает, что он ведет себя непредсказуемо


Прошу прощения, но это Вы не понимаете, как ведёт себя сервер.

Какой именно ?
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377256
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkSquid Gluk (Kazan)Бред
Бред и есть, самый натуральный. Или же Вы сформулировали так, что я понял нечто совсем иное, нежели Вы имели в виду. "Необходимость явно блокировать строку перед ее обновлением" - пожалуй, мне будет очень интересно увидеть ее работающий пример. На этот раз уже пожалуй что с кодом, чтобы избежать непонимания.
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377257
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkSquid Gluk (Kazan) DarkSquid[quot Gluk (Kazan)]Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести.

И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик.


Бред


Сам ты бред. Не веришь - проверь.

Переходим на личности ??? Ню Ню
Было любопытно с вами пообщаться, но пользы мне в таком общении ни на грош
А время дорого
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377274
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Теперь расскажите, как построить версионник без подобных аномалий и без отвратительных просадок по производительности при блокировании диапазонов ключей с соотвественно увеличивающеся вероятностью deadlock-ов ???
Пардон, это ко мне? Я то здесь при чем?
Если бы пришлось на версионнике с фантомами бороться в конкретной задаче, по условиям которой "подобные аномалии недопустимы" - ну сделал бы какое-нить дополнительное поле с дополнительной проверкой в триггере (т.е. в общем-то как в Вашем решении). А лечить Оракл от фантомных болезней снапшота - увольте, этим пусть юнцы с горящим взором занимаются :).
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377283
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот он консенсус ???

Эти юнцы все больше предпочитают раскрывать жидо-массонские заговоры ораклоидных Лож, а чуть что кричать "сам дурак"
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377299
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Как работает MS SQL (насколько я понял Merle): он работает в целом близко ко второму (cursor_sharing) режиму работы Oracle. Понятие bind variables там практически отсутствует; существует некий барьер, критическое число, после которого сервер решает, что у него "слишком много похожих планов" и сжимает их в один общий. Кроме того, существуют какие-то (непонятные мне) отличия в случае того, выполняется ли запрос из хранимой процедуры или передан непосредственно.

Итого, получается следующее: в случае Oracle существует возможность гибкой настройки каждого конкретного запроса.
А какая разница между where a = :a и where a = @a ? Если никакой - то не получается.
Я же тоже могу писать
where a = @a and b = @b
вместо
where a = :a and b = :b
и тогда план будет тоже повторно использоваться
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377306
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL/SQL тоже параметризует используемые в SQL переменные,
тока как быть с клиентским кодом ?
...
Рейтинг: 0 / 0
Почему ораклисты так не любят MS SQL?
    #33377308
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально для ораклистов:-

Транзакция A
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SQL> 
SQL> select * from a;

         A          B
---------- ----------
         1          1
         1          4

SQL> select * from a;

         A          B
---------- ----------
         1          1
         1          4

SQL> insert into a(a,b) values (1,5);

1 row created.

SQL> select count(*) from a where a=1;

  COUNT(*)
----------
         3



Транзакция B
Connected.
SQL> select * from a;

A B
---------- ----------
1 1
1 4

SQL> select count(*) from a where a = 4;

COUNT(*)
----------
0

SQL> select * from a where a = 1;

A B
---------- ----------
1 1
1 4

SQL> select count(*) from a where a = 1;

COUNT(*)
----------
2
SQL>


Что предлагают ораклисты? Посчитать count(*) и поместить его в поле счётчик в таблице DOCUMENT, после чего проверить ограничение в триггере на уровне строки. Это и есть бред или типичная ошибка ораклистов.

Чтобы её избежать, надо всегда в триггере перед модификацией данных , от которых зависит поле-счётчик блокировать это поле, а уже после модификации обновлять его, оставляя заблокированным до завершения транзакции. Это есть не бред, а единственно верное решение.
...
Рейтинг: 0 / 0
25 сообщений из 457, страница 4 из 19
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Почему ораклисты так не любят MS SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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