Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 [11] 12 13 14 15 .. 26   вперед  Ctrl
 Re: Провал операции Yukon  [new]
Gt.
Guest
автор
В MSSQL есть declare @table (pole int null), такая таблица вообще в памяти хранится, а не в tempdb.


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

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


если у вас это не получается в оракле, то вы ... мне сразу на личности перейти или пару наводящих вопросов еще задать :) ?

автор
Как часто вы используете временные таблицы? И вообще, используете ли?


нет не часто. обычно использую для генерации большого отчета - от клиента приходят рег номера фирм ~ 10K, они сваливаются в темпорари табличку и запускается процедура - процедура получает ид клиента, делает тучу операций (в том числе и с темпорари табличкой) и возвращает 5 разных курсоров.
19 май 04, 18:51    [688413]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
2с127
я, может, прослушал/проглядел...
Не могли бы Вы напомнить мне основные количественные характеристики Оракла?
В частности интересуют:
1. Максимальный размер записи
2. Максимальная ширина индекса
3. Максимальная длина поля типа varchar
4. максимальная глубина вложенности view
5. максимальная глубина рекурсии при вызове ХП
6. максимальное количество полей в таблице
7. максимальное количество таблиц в join clause
8. Foreign key table references per table
в общем то, что в BOL называется "Maximum Capacity Specifications"
Заранее спасибо.
19 май 04, 18:55    [688422]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Markelenkov
Member

Откуда:
Сообщений: 2312
Merle
Поясню..


Спасибо! Теперь я, невежа, хоть буду знать алгортмы работы Oracle
19 май 04, 19:26    [688466]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
Gt
это не таблица - это курсор в рекламных целях обозванный темпорари таблицей

Чувствуется глубокое знание SQL Server :))
Было бы неплохо чтобы Gt прежде чем что-то говорить об SQL Server хотя бы немного почитал документацию, а то "знания" так и прут.
19 май 04, 19:42    [688496]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Зл0й
Member

Откуда: Северная Калифорния
Сообщений: 686
Про обработку транзакций, и мелкий-мякгий-скуль. Наш банк объединился с другим банком. А там горе-специалисты в свое время забацали кредитную систему на MS SQL. А потом ее попытались использовать во всем банке. Имеется несколько сотен пользователей одновременно работающих с базой. Несколько пиков использования БД: конец дня (3 раза по EST, CST, WST), конец месяца, конец квартала. Естественно что база при пиковой нагрузке немедленно ложится. Ну не предназначен MS SQL для таких задач. Предлагалось использовать MTS. Поток транзакций можно балансировать не только межу серверами но между собой по времени. "В очередь, сукины дети, в очередь" как говорится. То есть не допускать нагрузку на БД выше той при которой база ложится. В результате взяли старую и весьма корявую Оракловую систему, доработали ее добавив бизнес-логику из системы на MS SQL. И все замечательно заработало. Безо всяких мониторов обработки транзакций. Неблокирующее чтение, кстати, очень помогает масштабироваться.
19 май 04, 22:37    [688657]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
c127
Guest
2 locky

>я, может, прослушал/проглядел...
Не могли бы Вы напомнить мне основные количественные характеристики Оракла?.....


Не могу, нет данных под рукой. Найду - напомню.
20 май 04, 00:55    [688755]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Merle
Guest
Этто несерьезно! (C) Других размеров страницы в MSSQL-е не бывает? В ASA например можно выбрать 1024,2048,4096,8192,16384,32768 байт. А если бывают, то все рассуждения ломаются.
Серьезно-серьезно. Других размеров страниц не бывает, потому что перед MS не стоит задача работать на всем, включая кофеварку, а для Винды размер страницы в 8k - оптимальный.

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

Запрос не может меняться в процессе выполнения, а до начала сервер не знает, уникально поле или нет, т.е. не знает, нужно ли использовать "with ties".
Сиквел всегда использует with ties.

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

и про "не удачная оптимизация откатов при RC..." хотелось бы всё таки пояснение.
http://rsdn.ru/?Forum/?mid=647322
20 май 04, 10:44    [689306]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
Я временные таблицы (или SPID - разделенные их заменители) использую постоянно.
Во многих случаях алгоритмы итеративны, их нельзя заменить одним эквивалентным запросом. В некоторых случаях подобная замена возможна, но является слишком неоптимальной, приходится бить один запрос на несколько с промежуточными результатами, которые приходится где-то хранить. А где? Во временных таблицах.


Согласен.
20 май 04, 10:48    [689322]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Зл0й
Про обработку транзакций, и мелкий-мякгий-скуль. Наш банк объединился с другим банком. А там горе-специалисты в свое время забацали кредитную систему на MS SQL. А потом ее попытались использовать во всем банке. Имеется несколько сотен пользователей одновременно работающих с базой. Несколько пиков использования БД: конец дня (3 раза по EST, CST, WST), конец месяца, конец квартала. Естественно что база при пиковой нагрузке немедленно ложится. Ну не предназначен MS SQL для таких задач. Предлагалось использовать MTS. Поток транзакций можно балансировать не только межу серверами но между собой по времени. "В очередь, сукины дети, в очередь" как говорится. То есть не допускать нагрузку на БД выше той при которой база ложится. В результате взяли старую и весьма корявую Оракловую систему, доработали ее добавив бизнес-логику из системы на MS SQL. И все замечательно заработало. Безо всяких мониторов обработки транзакций. Неблокирующее чтение, кстати, очень помогает масштабироваться


Уважаемый, ну что ж вы так Этот пример в детском саду приводить надо. Я могу показать с десяток систем на Оракле и столько же на MS SQL, которые будут ложиться при нагрузках. Так может на InterBase перейдем?

Если у разработчиков кривые руки, то это не значит, что сервер плохой

-- Tygra's --
20 май 04, 10:49    [689326]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Прямо как-то неужобно даже получается: Оракл то оказывается никогда не ложится при нагрузках и работает как часы, а огромная часть разработчиков и компаний зачем то MS SQL используют. Вот дураки! Ведь есть уже элексир счастья (Оракл), а они все ищут.

-- Tygra's --
20 май 04, 10:51    [689335]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Сильно !!! УВАЖАЮ :)

Вообще-то не знаю как в MS SQL, а в Oracle размер блока рекомендуется выбирать исходя из поставленной задачи ! Для DSS побольше для OLTP поменьше. Поэтому очень удобной фишкой (9i вроде, сам не юзал) явилась возможность использовать разные размеры блока для разных табличных пространств.
20 май 04, 10:51    [689338]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Гмм реплика относилась к заявлению Merle о ненужности других размеров блоков
20 май 04, 10:52    [689341]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
это не таблица - это курсор в рекламных целях обозванный темпорари таблицей. темпорари таблица в оракле - ее можно использовать во view, у нее есть тригеры, индексы и т.п. ну а для пересенных в памяти в оракле совсем другие конструкции.


Что в вашем понятии курсор, а что таблица, интересно..
Для temporary таблиц мне не нужны ни триггеры ни всякие прибамбасы к ним, у них другое предназначение.

автор
мне надо в одном батче выполнить и процедуру сервера и использовать переменнные из нее и в нее, еще выполнить select и еще кучу всего.. на MSSQL все получается на ура
если у вас это не получается в оракле, то вы ... мне сразу на личности перейти или пару наводящих вопросов еще задать :) ?


:) Ну давайте конкретнее. Есть Delphi, в нем есть TQuery, в нем есть свойство SQL: как мне за раз выполнить аналог такого скрипта MSSQL на Oracle:

declare @myVar int,
@myRetVal int
SET @myVar = 5.5
exec sp_mysp @myVar, @myRetVal OUTPUT
declare @myVar2 int
SELECT @myVar2 = Pol0
FROM const
WHERE Pol1 = dbo.user_name()

SELECT Pole1
FROM MyTable
WHERE Pol2 = @myRetVal
AND Pol3 = @myVar2

На MSSQL я могу произвольно расширить этот скрипт чем угодно и хранить его текст в базе данных, потом его скачивать и выполнять.. А можно так на Oracle?

автор
нет не часто. обычно использую для генерации большого отчета - от клиента приходят рег номера фирм ~ 10K, они сваливаются в темпорари табличку и запускается процедура...


Насколько я понимаю это разовые админские функции ты выполняешь?
20 май 04, 11:02    [689393]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
Естественно что база при пиковой нагрузке немедленно ложится. Ну не предназначен MS SQL для таких задач.


Я и без всякой базы могу написать одну процедуру (размером в строчку) и при вызове ее ложить MSSQL, как вы думаете, что это значит? :)
20 май 04, 11:05    [689412]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
автор
На MSSQL я могу произвольно расширить этот скрипт чем угодно и хранить его текст в базе данных, потом его скачивать и выполнять.. А можно так на Oracle?


Еще и так???? А про хранимые процедуры не слышали? Их можно с клиента выполнять. А не заниматься ....... ы.. скачиванием скриптов
А в Оракле ведь тоже хранимые процедуры есть! И их тоже можно исполнять с клиента! Во как! Новость для вас?

Ну вот, я буквально спас Drema от перехода Gt. на личности

-- Tygra's --
20 май 04, 11:28    [689533]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2400
Блог
Вот-вот... Танк не полетит, вертолёт ездит как попало. Давайте ещё калибры основных орудий сравним.

Пап, а если кит на землю вылезет, он слона заборет?
20 май 04, 11:37    [689601]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
Еще и так???? А про хранимые процедуры не слышали? Их можно с клиента выполнять. А не заниматься ....... ы.. скачиванием скриптов
А в Оракле ведь тоже хранимые процедуры есть! И их тоже можно исполнять с клиента! Во как! Новость для вас?


Не в этом был вопрос, принцип реализации моего приложения остается на моей совести и он оправдыват все вложенные в него затраты и с успехом работает :) И процедур у меня более 1000 штук, поэжтому я знаю что это такое :)

Вы лучше ответьте может так Oracle или не может :)
20 май 04, 11:55    [689679]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Как - так???

Выполнить ХП?

-- Tygra's --
20 май 04, 12:17    [689788]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Leonid
Member [заблокирован]

Откуда: From nowhere
Сообщений: 743
Drema
Вы лучше ответьте может так Oracle или не может :)
Думаю, при использовании не стандартного TQuery, а всяких там DOA или ODAC, сможет все.
20 май 04, 13:22    [690065]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
Как - так???

Выполнить ХП?


Неужели в том коде, что я написал выше, вы видите один лишь вызов ХР?
20 май 04, 13:41    [690151]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
Думаю, при использовании не стандартного TQuery, а всяких там DOA или ODAC, сможет все.


Я, конечно, не знаю, имеет ли смысл ездить за хлебом за 100 км, когда его продают в соседнем ларьке. С помощью стандартных интерфейсов Oracle это сделать не может (imho, с удовольствием приму обратное, если кто покажет).. боюсь, что и в обособленных тоже это не совсем просто.

Я еще в той процедуре, которая вызывается из скрипта, могу вернуть курсор клиенту, наравне с простым selectом, совсем не изменяя скрипт и принцип его вызова.. я уж об этом не говорю..
20 май 04, 13:45    [690175]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
eNose
Member

Откуда:
Сообщений: 183063
Вот именно так (с таким синтаксисом) - не умеет.
В Оракуле синтаксис будет несколько другой: Select ... INTO ... со всеми вытекающими последствиями.
Но этот пример - совсем не показатель ущербности Оракла по сравнению со Скулем :-)


eNose
20 май 04, 13:46    [690180]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
eNose
Member

Откуда:
Сообщений: 183063
С помощью стандартных интерфейсов Oracle это сделать не может (imho, с удовольствием приму обратное, если кто покажет).. боюсь, что и в обособленных тоже это не совсем просто.

Люмимые тобою М$-интерфейсы - отньдь НЕ СТАНДАРТ для оракла.
А вот DOA/ODAC - как раз и есть обертка над РОДНЫМ ораклиным интерфейсом.


eNose
20 май 04, 13:49    [690194]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Drema
Member

Откуда: Москва
Сообщений: 249
автор
Вот именно так (с таким синтаксисом) - не умеет.
В Оракуле синтаксис будет несколько другой: Select ... INTO ... со всеми вытекающими последствиями.


В каком смысле INTO?.. Боюсь, что эквивалент сего кода на Oracle будет занимать в раза два больше и придется еще дописывать на Delphi (или где там мы пишем клиента) и простым INTO здесь не обойдешься.

автор
Но этот пример - совсем не показатель ущербности Оракла по сравнению со Скулем :-)


Согласен, это всего лишь пример гибкости MSSQL :)

автор
Люмимые тобою М$-интерфейсы - отньдь НЕ СТАНДАРТ для оракла.
А вот DOA/ODAC - как раз и есть обертка над РОДНЫМ ораклиным интерфейсом.


И даже на них такое тоже не сворганить, правильно? :)
20 май 04, 14:18    [690330]     Ответить | Цитировать Сообщить модератору
 Re: Провал операции Yukon  [new]
Karpol
Member

Откуда:
Сообщений: 92
Gt

не знаю на счет конкретных программистов, но автор выглядит ламером :)

Основная идея приведенной статьи сравнить подход в программировании в Oracle и MS SQL. На практике он именно такой как там описан. И не важно,
причиной тому стало отстутсвие каких средств в конретном сервере SQL или же неудобство его использования.

Gt

create global temporary table tst(f1 varchar2(100)) on commit delete rows ;
create as .....


Как ты собираешься выполнять CREATE в процедурах? Через Execute Immediate?
Нельзя там DDL-команды выполнять.
Я пишу процедуру, хочу выбрать набор данных и поместить во временной хранилище, что это будет, мне хочется как можно меньше задумываться
select .....
into #my_table
from ....

и в той же процедуре их выбрать
select
from #my_table

Как это реализовать в Оракле? Можно написать
Execute Immediate "create global temporary table tst(f1 varchar2(100), ....) on commit delete rows ";
Ужасно выглядит. Еще и поля описывать приходится. Можно конечно воспользоваться create as select. Только опять же весь селект прийдется выполнять Execute Immediate. А прикинь если в нем еще как параметры переменные участвуют. Такой алгоритм потом разгребать замучаешься.
У тебя возникнет желание применять это на практике? У меня нет, и у других тоже. Один из вариантов сделать это красивее насоздавать таблицы заранее,
не в процедуре. Но тогда от чего ушли к тому и пришли. Насоздай кучу таблиц, потом типа можешь их в процедуре применять.
Единственный плюс "временной" таблицы Оракла по сравнению с обычной таблице Оракла это не хранение не нужных данных. Типа после commit все ушло. В MS SQL понятие временной таблице гораздо шире.
20 май 04, 14:20    [690335]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 [11] 12 13 14 15 .. 26   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить