Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 16   вперед  Ctrl
 Re: PL/SQL vs.Transact SQL  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
Я так полагаю, что глобальные сравнения типа Pl/SQL vs. T-SQL или oracle vs. mssql имеют мало смысла, так как эти системы достаточно различны, мало людей могут похвастатся реально глубокими познаниями сразу в них обоих (хотя конечно количество тех кто считает себя профи значительно больше :)) ).
Что-бы получить хоть какую-то реальную глобальную картину происходящего, нужно меряться не бессмысленными сравнениями типа "а нафига там временная таблица", а такими-же глобальными фактами как например тесты tpc. Я-бы к ним еще добавил время, затраченное на написание, настройку и поддержку системы (в человеко-часах)
8 май 09, 07:30    [7160533]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Solmyr
Member

Откуда: город К. -> город М.
Сообщений: 538
to pkarklin.

Интересно, а как эти временные таблицы хранятся в MSSQL? Из уже написанного - в tempdb - можно сделать вывод, что на диске? Т.е. аналогично оракловым gtt?
8 май 09, 12:36    [7161810]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Solmyr
to pkarklin.

Интересно, а как эти временные таблицы хранятся в MSSQL? Из уже написанного - в tempdb - можно сделать вывод, что на диске? Т.е. аналогично оракловым gtt?


И временные таблицы и табличные переменные "храняться" в tempdb.
8 май 09, 12:55    [7161922]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
Solmyr
to pkarklin.

Интересно, а как эти временные таблицы хранятся в MSSQL? Из уже написанного - в tempdb - можно сделать вывод, что на диске? Т.е. аналогично оракловым gtt?


так в Оракле они просто хранятся, а MS SQL они на лету создаются и убиваются - это же намного круче!
8 май 09, 13:29    [7162147]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2498
дддддд,
если на операцию создания и удаления времянок тратится лишнее время, то оракловый подход круче
8 май 09, 13:34    [7162181]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
ОКТОГЕН
дддддд,
если на операцию создания и удаления времянок тратится лишнее время, то оракловый подход круче
не путайте реализацию и концепцию
8 май 09, 14:18    [7162486]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
ОКТОГЕН
дддддд,
на операцию создания и удаления времянок тратится лишнее время


А когда мелкософт волновала проблема быстродействия?
У Билла на этот случай один ответ - "вы используете устаревшее оборудование"
8 май 09, 14:25    [7162517]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Solmyr
Member

Откуда: город К. -> город М.
Сообщений: 538
pkarklin
И временные таблицы и табличные переменные "храняться" в tempdb.


Вроде = что делают - хранятся, что делать - храниться. Или это у меня такой неверный оракловый подход? :)

Из данного факта, учитывая так широко освещенную вами их необходимость, удобность, производительность и прямо таки одиозность, возникает целый комплекс вопросов:

1) если брать врем. таблицы MSSQL (втмс) как аналог оракловых коллекций и массивов, т.е. для хранения промежуточных результатов запроса для послед. обработки (проведение каких то расчетов и проч.), то в оракуле данные объекты хранятся таки в памяти, а втмс на диске.

2) если брать втмс как аналог оракловых врем. таблиц (вто), собственно также для хранения промежут. результатов, то вто типизированы, при вызове процедуры не создаются каждый раз, их использование не логируется. У втмс, как я понял, все наоборот.

3) если брать втмс как средство разбиения сложных запросов на простые, то в оракуле оно и не нужно. Вы не задавались вопросом, почему в оракуле предпочтение отдается сложному запросу перед процедурным подходом? Именно потому, что запрос выбирает данные из обычных (реальных) таблиц, в которых уже все оптимизировано для быстрого поиска (индексы и др.), плюс ссылочная целостность, статистика, различная бизнес-логика. Чего очевидно не наблюдается в втмс. Навешивание на втмс чего-то подобного, я думаю, бесперспективное занятие.
А если все же надо материализовать результаты, то хинт в руки (выше писали уже).

4) по поводу исп-я втмс для подсказки оптимизатору (в т.ч. при запросах через линки) - это сильно задвинуто. В оракуле есть хинты, например, driving_site, подсказывающие оптимизатору на какой стороне следует выполнять запрос. Без всяких фокусов с врем. таблицами.

Короче говоря, необходимость, удобность и производительность втмс это из области какой то непонятной фантастики.

Единственное видимое мне добро от втмс, и то с т.зр. программера, это их большая похожесть на таблицы, нежели аналоги оракле, и отсюда сопутствующие функции по работе с ними как с таблицами.
А если с т.зр. сервера БД, так и этого плюса нет.

Такое вот получилось ИМХО.
8 май 09, 14:43    [7162631]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Ggg_old
Member

Откуда: Одесса
Сообщений: 1342
Не перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного. Временные таблицы - это удобный инструмент для структуирования, отладки и в некотоых случая увеличения производительности запросов. В отличии от вских масиивов и еще чего-то непонятного в оракле, они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними.
А где оно и как хранится, как реализуется не является уже свойством языка а является свойством конкретного движка сервера. В Sybase SA времянки могут быть не логгируемыми, хранятся по-другому, но к языку это не имеет никакого отношения.
8 май 09, 14:55    [7162694]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
Почему-то на собеседованиях очень часто любят задавать задачи типа:

Написать скрипт на удаление задвоенных записей.
прочем удалить надо не все задвоенные записи, и запись, которая была введена последней.

Интересно, как эта задача решается на MS SQL?
8 май 09, 15:39    [7162940]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Ggg_old
Member

Откуда: Одесса
Сообщений: 1342
А что сложного в этой задаче? Надо только определиться с критерием задвоенности и опираться на поле "дата ввода".
8 май 09, 15:55    [7163022]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
Ggg_old
А что сложного в этой задаче? Надо только определиться с критерием задвоенности и опираться на поле "дата ввода".


Нет даты ввода. есть 2 поля ID, NAME
8 май 09, 15:59    [7163038]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
Точнее, есть только одно поле NAME.
8 май 09, 16:00    [7163039]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67476
Блог
дддддд
прочем удалить надо не все задвоенные записи, и запись, которая была введена последней.

Нет даты ввода. есть 2 поля ID, NAME

А вот мне, например, было бы любопытно, как решить эту задачу на Oracle. Желательно без рассказа об ORA_ROWSCN :)
8 май 09, 16:04    [7163061]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
пгуые123
Guest
дддддд
Почему-то на собеседованиях очень часто любят задавать задачи типа:

Написать скрипт на удаление задвоенных записей.
прочем удалить надо не все задвоенные записи, и запись, которая была введена последней.

Интересно, как эта задача решается на MS SQL?
Навскидку
+
DECLARE @tbl TABLE (id INT IDENTITY(1,1), f1 INT, f2 INT, stamp TIMESTAMP)

INSERT INTO @tbl (f1,f2) 
SELECT 1, 1 UNION ALL
SELECT 1, 1 UNION ALL
SELECT 2, 2 UNION ALL
SELECT 2, 2 UNION ALL
SELECT 3, 3 UNION ALL
SELECT 3, 3

SELECT * FROM @tbl


DELETE FROM @tbl
WHERE id NOT IN (SELECT TOP 1 WITH TIES id FROM @tbl t ORDER BY ROW_NUMBER() OVER (PARTITION BY f1, f2 ORDER BY stamp)
)

SELECT * FROM @tbl


ЗЫ. Позвольте поинтересоваться: если вы не знаете ничего кроме оракла, то какого фига вы шаритесь в форуме по сравнению субд?
Ggg_old
Не перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного. Временные таблицы - это удобный инструмент для структуирования, отладки и в некотоых случая увеличения производительности запросов. В отличии от вских масиивов и еще чего-то непонятного в оракле, они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними.
А где оно и как хранится, как реализуется не является уже свойством языка а является свойством конкретного движка сервера. В Sybase SA времянки могут быть не логгируемыми, хранятся по-другому, но к языку это не имеет никакого отношения.
А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.

почитал тут у вас - прикольно. на каждую бензоколонку - по ораклю и оказывается работа с ораклем повышает чуство ответственности... с каких пор инструмент стал лечилкой от кривых рук?
8 май 09, 16:08    [7163079]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
softwarer
дддддд
прочем удалить надо не все задвоенные записи, и запись, которая была введена последней.

Нет даты ввода. есть 2 поля ID, NAME

А вот мне, например, было бы любопытно, как решить эту задачу на Oracle. Желательно без рассказа об ORA_ROWSCN :)


--
-- Удалить дублирующие строки
--
drop table expl cascade constraints
/
create table expl (expl_id number(10), 
                   expl_name varchar2(10), 
                   expl_adress varchar2(10))
/

insert into expl values (1,'имя','адрес');
insert into expl values (1,'имя','адрес');
insert into expl values (2,'имя2','адрес2');
insert into expl values (2,'имя2','адрес2');
insert into expl values (3,'имя3','адрес3');
insert into expl values (4,'имя4','адрес4');
commit;

--
-- From TKyte
--
delete from expl
where rowid in (select rid
                from (select rowid rid,
                      row_number() over (partition by a.expl_id, 
                                                      a.expl_name, 
                                                      a.expl_adress
                                                      order by rowid) rn
                      from expl a)
                where rn <> 1)
                
select * from expl  
8 май 09, 16:16    [7163121]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
дддддд
Guest
пгуые123

ЗЫ. Позвольте поинтересоваться: если вы не знаете ничего кроме оракла, то какого фига вы шаритесь в форуме по сравнению субд?


Чтобы понять, стоит ли переходить с Оракла на более передовую СУБД.
8 май 09, 16:20    [7163139]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Solmyr
Member

Откуда: город К. -> город М.
Сообщений: 538
Ggg_old
Не перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного. Временные таблицы - это удобный инструмент для структуирования, отладки и в некотоых случая увеличения производительности запросов. В отличии от вских масиивов и еще чего-то непонятного в оракле, они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними.


Я вообще то не адепт. И оракул юзаю постольку поскольку. За других слава богу не отвечаю. Вместо слова "оракле" подставьте любое, если вам так легче. Просто рассуждаю о конкретных подходах и реализациях в MSSQL и Oracle. С Sybase SA не работал и даже не видел. Раз там реализовано так, как вы написали, думаю не зря это было сделано?

А вот тов. pkarklin с описанными вами упорством и верой доказывает крутость втмс, и при каждом случае не забывает кивнуть на их отсутствие в оракле.
А по факту получаем, что втмс - это почти обычная (реальная) таблица БД, со всеми вытекающими накладными расходами в виде создания, дискового ввода\вывода, логирования и проч. Создавать обычную таблицу на каждый чих - совершенно безупречное решение от MS. Ура, товарищи. :)

Вот с "они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними" согласен. Но кому скажите нужно такое средство, созданное для "структуирования, отладки", а применяемое в пром. коде? И откуда бы здесь интересно взяться указанному "в некотоых случая увеличения производительности запросов"?

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


Функциональность и реализация конкретных функций в движке БД накладывает таки ограничения на возможности языка БД. Вы не находите?
8 май 09, 16:36    [7163223]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Solmyr
Member

Откуда: город К. -> город М.
Сообщений: 538
пгуые123
А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.


Тов. softwarer сказал, что большинство тем по сравнению MSSQL и Oracle создано mssql-щиками. Так что неправда ваша.
8 май 09, 17:04    [7163360]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67476
Блог
дддддд
--
-- Удалить дублирующие строки
--

Мне таки по-прежнему любопытно, как решить эту задачу на Oracle. Если Вы готовы дать зуб, что приведённый код таки удаляет "запись, которая была введена последней" - приносите

Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 
Connected as test

 Создадим и заполним таблицу

SQL> create table dupes (i integer) rowdependencies;

Table created

SQL> insert into dupes select mod (rownum, 10) from dual connect by level <= 10000;

10000 rows inserted

SQL> commit;

Commit complete

SQL> delete from dupes where rownum <= 5000;

5000 rows deleted

SQL> commit;

Commit complete

SQL> insert into dupes select mod (rownum, 10) from dual connect by level <= 5000;

5000 rows inserted

SQL> commit;

Commit complete

 Посмотрим минимальный и максимальный номера транзакций для записи с i = 0

SQL> select min (ora_rowscn), max (ora_rowscn) from dupes where i = 0;

MIN(ORA_ROWSCN) MAX(ORA_ROWSCN)
--------------- ---------------
       17519961        17520012

 Выполним приведённый Вами запрос

SQL> delete from dupes
  2  where rowid in (select rid
  3                  from (select rowid rid,
  4                        row_number() over (partition by i
  5                                                        order by rowid) rn
  6                        from dupes a)
  7                  where rn <> 1)
  8  ;

9990 rows deleted

SQL> commit;

Commit complete

 И посмотрим, какая запись сохранилась

SQL> select min (ora_rowscn), max (ora_rowscn) from dupes where i = 0;

MIN(ORA_ROWSCN) MAX(ORA_ROWSCN)
--------------- ---------------
       17520012        17520012
8 май 09, 17:04    [7163364]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Solmyr
Member

Откуда: город К. -> город М.
Сообщений: 538
Solmyr
пгуые123
А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.


Тов. softwarer сказал, что большинство тем по сравнению MSSQL и Oracle создано mssql-щиками. Так что неправда ваша.


Хотя должен признать, что mssql-щики по теме в общей массе спорят более аргументированно, и тов. pkarklin в первую голову.
А со стороны оракула действительно частенько вылазили троли. Счас их поубавилось вроде.
8 май 09, 17:09    [7163388]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Ggg_old
Member

Откуда: Одесса
Сообщений: 1342
Без поля "дата ввода", задача не корректна, особенно для собеседования. Ссылки на внутренние поля типа row_id и еще чего-то в таком духе не канают ибо специфицично для сервера, и самое главное, не соответсвуют самому духу декларативной обработки данных в реляционной системе. Да и как поменяется этот row_number после разного рода бэкапов/ресторов, процедуры перезаливки таблицы и еще еще каких-нибудь административных действий неизвестно.
Итого: без поля дата ввода надо оставить одну любую из двух записей.
8 май 09, 17:15    [7163412]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Ggg_old

Не перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного.

Solmyr

Хотя должен признать, что mssql-щики по теме в общей массе спорят более аргументированно, и тов. pkarklin в первую голову.
А со стороны оракула действительно частенько вылазили троли. Счас их поубавилось вроде.

господа, давайте обсуждать возможности серверов, а не методы спора их сторонников
8 май 09, 17:16    [7163419]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
пгуые123
Guest
Solmyr
пгуые123
А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.


Тов. softwarer сказал, что большинство тем по сравнению MSSQL и Oracle создано mssql-щиками. Так что неправда ваша.
Не знаю кто че создавал но по последним темам ощущение, что у некоторых ораклистов ум за разум заходит. Советовать всем и вся Oracle дурь есть великая и полный пусец, хоть бы он трижды и был хорош. а XE - это вобще редкостная замануха, эдакий бесплатный сыр. Что вы знаете о видах бесплатного сыра? ;)
8 май 09, 17:25    [7163460]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL vs.Transact SQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
дддддд
Интересно, как эта задача решается на MS SQL?

намного интереснее, как такая задача появляется
8 май 09, 17:57    [7163575]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 16   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить