powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
24 сообщений из 99, страница 4 из 4
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894248
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVОбъясняю по новой.
Тем, что нет его(SNAPSHOT) в MS SQL, если выключен режим версионности,

Странно, стрелял Дантес, а памятник Пушкину. Если MS SQL вообще не запускать, то в нем вообще ничего не будет.

FreemanZAVа то что позволяет его сэмулировать (RR), накладывает офигенные ограничения, как-то невозможность вставки в параллельных транзакциях.

Ага, CPU not found!!! Using software emulation... Убей не пойму, зачем пытаться что-то эмулировать при RR в режиме блокировочника, если есть другой режим? Садомазохизм?

FreemanZAVНикакого желания
...
Ни за что.

Ну, тогда, позвольте мне относиться к Вашему "не верю", как очередному пуку. Ничего личного.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894289
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin[
Ну, тогда, позвольте мне относиться к Вашему "не верю", как очередному пуку. Ничего личного.
Много народу, этаких матёрых mssql-щиков, восторженно кричало об оптимизаторе MS SQL. Я поверил. На первой же неделе использования мною MS SQL я нашёл конкретный косяк в оптимизаторе. Такой чуши я от него не ожидал. Но mssql-щики мне с пеной у рта доказывали, что это как раз и есть показатель ума оптимизатора, а то что возникают тормоза - фигня, зато всё по уму. С тех пор я разочаровался в людях и оптимизаторах
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894326
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНа первой же неделе использования мною MS SQL я нашёл конкретный косяк в оптимизаторе. Такой чуши я от него не ожидал. Но mssql-щики мне с пеной у рта доказывали, что это как раз и есть показатель ума оптимизатора, а то что возникают тормоза - фигня, зато всё по уму. С тех пор я разочаровался в людях и оптимизатора

Вы об этом: Скалярный кореллированный подзапрос


???
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894335
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinFreemanZAVНа первой же неделе использования мною MS SQL я нашёл конкретный косяк в оптимизаторе. Такой чуши я от него не ожидал. Но mssql-щики мне с пеной у рта доказывали, что это как раз и есть показатель ума оптимизатора, а то что возникают тормоза - фигня, зато всё по уму. С тех пор я разочаровался в людях и оптимизатора

Вы об этом: Скалярный кореллированный подзапрос


???
Чудится мне, что опять сейчас придётся читать дифирамбы оптимизатору
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894339
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно не писать, я уже всё слышал и читал во всевозможных вариациях
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894424
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЧудится мне, что опять сейчас придётся читать дифирамбы оптимизатору

Да нет. Не дифирамбы и не оптимизатору. ;)

авторМожно не писать, я уже всё слышал и читал во всевозможных вариациях

Гм... По-моему Вам в том топике не обяснили самого главного. Почему оптимизатор решил выполнять запрос каждый раз. Как Вы думаете, может ли такой запрос возвращать строго один и тот же результат всегда?

Код: plaintext
select top  1  t1.field1 from table1 t1 where t1.field1 =  1 

Точнее, на основании каких критериев оптимизатор должен понять, что результат такого запроса детерминирован?
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894446
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже перетирали всё http://groups.google.com/group/ru-firebird?lnk=srg Повторяться не хочется
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35894459
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVУже перетирали всё http://groups.google.com/group/ru-firebird?lnk=srg Повторяться не хочется

А по-точнее линк?
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35897805
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BasonpkarklinBasonНе вижу никаких наездов, высказал сугубо свое мнение.

М.б. мы и аргументации дождемся?
Отсутствие в триггерах BEFORE, работа с inserted и deleted немного затрудняет обработку данных в триггерах (намного проще оперировать New.val, Old.val)...
Нет, ну не могу промолчать.
New.val обязательно предполагает циклы или курсоры, что, как мне кажется, все-таки в стороне от реляционного подхода, основанного на множествах и операциях с ними.
И позиция "затрудняет - не затрудняет" мне кажется "студенческой". Выдача грантов тоже затрудняет мне жизнь, но это не повод всем работать под sa/sysdba
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898139
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oracle
Код: 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.
25.
26.
27.
28.
29.
30.
SQL> select val from tmp t where id in (select a from tstt where rownum=1 and a=1) ;

       VAL
----------
        20


Execution Plan
----------------------------------------------------------
Plan hash value: 3528042118

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      |     1 |    26 |     6   (0)| 00:00:01 |
|*  1 |  FILTER              |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL  | TMP  |     1 |    26 |     3   (0)| 00:00:01 |
|*  3 |   FILTER             |      |       |       |            |          |
|*  4 |    COUNT STOPKEY     |      |       |       |            |          |
|*  5 |     TABLE ACCESS FULL| TSTT |     1 |    13 |     3   (0)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter( EXISTS (???)
   3 - filter("A"=:B1)
   4 - filter(ROWNUM=1)
   5 - filter("A"=1)

...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898380
rilio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.Pepper New.val обязательно предполагает циклы или курсоры, что, как мне кажется, все-таки в стороне от реляционного подхода, основанного на множествах и операциях с ними.
Это в каком смысле предполагает?
Например,
Код: plaintext
1.
2.
3.
begin
  if (new.amount <  0 ) then new.amount =  0 ;
end
...вот и весь триггер...
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898416
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rilio
Например,
Код: plaintext
1.
2.
3.
begin
  if (new.amount <  0 ) then new.amount =  0 ;
end
...вот и весь триггер...

Поклонники MS SQL напишут что-то вроде:
Код: plaintext
1.
update inserted set amount =  0  where amount <  0 
и будут в чем-то правы, но читается хуже, ИМХО.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898418
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правда нахрена это делать в триггере After - я не знаю
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898469
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Поклонники MS SQL напишут что-то вроде:
Код: plaintext
1.
update inserted set amount =  0  where amount <  0 
и будут в чем-то правы, но читается хуже, ИМХО.
Не напишут.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898487
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как напишут?
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35898527
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ФроловА как напишут?
Напишут update .... from ....

Вообще, идея построчных триггеров, как before так и after не лишена практического смысла, хотя это может противоречить чьему-то чуЙству прекрасного и/или теории.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35899486
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyСергей ФроловА как напишут?
Напишут update .... from ....

Вообще, идея построчных триггеров, как before так и after не лишена практического смысла, хотя это может противоречить чьему-то чуЙству прекрасного и/или теории.
Теорию или хотя-бы стандарт в студию!!!
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35900339
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FreemanZAVТеорию или хотя-бы стандарт в студию!!!Да пожалуйста!
Вот тут лежит draft SQL-2006 в zip
Открываем 5CD2-02-Foundation-2006-01.pdf, стр. 653:

Код: 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.
25.
26.
27.
28.
29.
 11 . 39  <trigger definition>

<trigger definition> ::=
CREATE TRIGGER <trigger name> <trigger action time> <trigger event>
ON <table name> [ REFERENCING <transition table or variable list> ]
<triggered action>
<trigger action time> ::=
BEFORE
| AFTER
<trigger event> ::=
INSERT
| DELETE
| UPDATE [ OF <trigger column list> ]
<trigger column list> ::=
<column name list>
<triggered action> ::=
[ FOR EACH { ROW | STATEMENT } ]
[ WHEN <left paren> <search condition> <right paren> ]
<triggered SQL statement>
<triggered SQL statement> ::=
<SQL procedure statement>
| BEGIN ATOMIC { <SQL procedure statement> <semicolon> }... END
<transition table or variable list> ::=
<transition table or variable>...
<transition table or variable> ::=
OLD [ ROW ] [ AS ] <old transition variable name>
| NEW [ ROW ] [ AS ] <new transition variable name>
| OLD TABLE [ AS ] <old transition table name>
| NEW TABLE [ AS ] <new transition table name>
Видим, что в следующих стандарту СУБД, например DB2 ;), можно работать как с OLD/NEW ROW через переменные, так и с OLD/NEW TABLE как с таблицей. Причем и AFTER триггеры там таки есть.
В общем, MS, как всегда, идет своим нелегким (для ее пользователей) путем :)
Хотя в 2008 многое из стандарта все-таки появилось.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35901624
Фотография Saller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Favn
Видим, что в следующих стандарту СУБД, например DB2 ;), можно работать как с OLD/NEW ROW через переменные, так и с OLD/NEW TABLE как с таблицей. Причем и AFTER триггеры там таки есть.
В общем, MS, как всегда, идет своим нелегким (для ее пользователей) путем :)
Хотя в 2008 многое из стандарта все-таки появилось.
Что это? О_О
При чем тут ДБ2?
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35902472
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SallerЧто это? О_О
При чем тут ДБ2?Попросили "стандарт в студию" - я привел стандарт на триггеры и пример знакомой мне СУБД, в которой он полностью реализован.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35902631
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.PepperNew.val обязательно предполагает циклы или курсоры, что, как мне кажется, все-таки в стороне от реляционного подхода, основанного на множествах и операциях с ними.
Давайте подброшу простую задачу: "при добавлении строки в таблицу А должна автоматически вызываться процедура Б с параметром = :new.id". Внимание, два вопроса:

1. Покажите на примере этой задачи, как :new.val "обязательно предполагает циклы или курсоры"
2. Покажите на примере этой задачи, как MSSQL-подход позволяет обойтись без "циклов или курсоров"

Sgt.PepperИ позиция "затрудняет - не затрудняет" мне кажется "студенческой". Выдача грантов тоже затрудняет мне жизнь, но это не повод всем работать под sa/sysdba
Ваша ассоциация не совсем корректна, поскольку фокусируется только на части правды. Чтобы показать это, я отвечу столь же некорректной фокусировкой на другой части правды: "Постоянное лежание под жигулями тоже затрудняет мне жизнь, но это не повод всем ездить на мерседесах" .
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35902975
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приношу извинения, за попытку ответить за Sgt.Pepper

softwarer
Давайте подброшу простую задачу: "при добавлении строки в таблицу А должна автоматически вызываться процедура Б с параметром = :new.id"....
2. Покажите на примере этой задачи, как MSSQL-подход позволяет обойтись без "циклов или курсоров"

Код: plaintext
1.
2.
3.
Microsoft SQL Server 2008 (RTM) - 10.0.1798.0 (Intel X86) 
	Feb 20 2009 19:26:58 
	Copyright (c) 1988-2008 Microsoft Corporation
	Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)

Если сразу разрабатывать, с учетом возможностей 2008, то курсора можно попытаться избежать. Но далеко не факт, что избежать курсора удасться в любом случае. Лично я ничего плохого не вижу в использовании курсора для "вызова хп для каждой записи", если нет возможности переписать хп с учетом массовой обработки записей.

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
USE tempdb
GO

CREATE TYPE MyTable AS TABLE(col1 int)
GO

CREATE TABLE Table1 (col1 int)
GO

CREATE PROC Proc1
  @MyTable MyTable READONLY
AS
  INSERT Table1 (col1) SELECT col1 FROM @MyTable
GO

CREATE TRIGGER it_Table1 ON Table1
FOR INSERT
AS
  DECLARE @MyTable MyTable
  INSERT @MyTable (col1) SELECT col1 FROM inserted
  EXEC Proc1 @MyTable
GO
INSERT Table1(col1)
SELECT  1 
UNION ALL
SELECT  2 
UNION ALL
SELECT  3 
UNION ALL
SELECT  4 
UNION ALL
SELECT  5 
GO

SELECT * FROM Table1
GO

DROP PROC Proc1
DROP TABLE Table1
DROP Type MyTable

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
col1        
----------- 
1
2
3
4
5
5
4
3
2
1

(10 row(s) affected)
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35903627
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinЕсли сразу разрабатывать, с учетом возможностей 2008, то курсора можно попытаться избежать.
Это удастся в том случае, когда неверна постановка задачи "обрабатывать по одной записи". Тогда и без 2008-го хорошо бы найти способ избежать. Я же имею в виду случаи, когда массовая обработка.. объективно затруднительна. Тут уж таки - либо "бьём на записи" в триггере, либо явно (то есть курсор и цикл).

pkarklinЛично я ничего плохого не вижу
Я тоже не вижу. По своей привычке я подсвечиваю.. не самое удачное утверждение, вот и всё.
...
Рейтинг: 0 / 0
Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
    #35904358
Фотография Saller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФБ конечно с такой задачкой справляется намного проще нежели MSSQL
Код: plaintext
1.
if (New.Id is not null) then
   Execute procedure B New.Id;
На вкус и цвет...
...
Рейтинг: 0 / 0
24 сообщений из 99, страница 4 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Помогите выбрать СУБД FireBird или MS SQL Server 2000 ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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