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

Откуда: СПб
Сообщений: 19788
locky

tru55 wrote:
> Ну, положим, пакеты в Oracle позволяют не только группировать процедуры
> вместе. Как минимум:
> 1. использование пакетных переменных для передачи значений между
> программными единицами, например, между триггерами и процедурами
Удобно. Но, к сожалению, некоторые т.н. "программисты" этим очень
злоупотребляют :)
С другой стороны - можно ведь и не злоупотреблять, верно?
Удобно, одним словом.

> 2. возможность перегрузки процедур
Сомнительно - зачем нужно? Для геммороя?

> 3. единая грантовка на пакет целиком
У меня таких проблем не возникало - гранты имеют только ~1% от общего
числа процедур. но, в любом случае - возможность есть - пусть будет.

Хотя мне больше всё-таки нужна группировка (ну, и от пакетных переменных
- тоже не отказаолся бы, наверное).


1...

2. Ну почему же? Например, таким способом реализованы стандартные функции, которые могут принимать различные типы аргументов (to_char, nvl и проч.). В противном случае пришлось бы на каждый тип аргумента создавать свою функцию

3. А что, остальные не используются или вызываются из других? В любом случае, удобнее выдать гранты на несколько пакетов, чем на пару сотен процедур
29 окт 07, 15:26    [4851517]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
tru55
Да что вы говорите?
На этом основан, в частности, стандартный способ избавления от мутации таблицы в триггере.


Простите, но мне не от чего избавляться... У меня ничего не мутирует...

tru55
Я уж не говорю об удобстве отключения функционирования части (всего) триггера в зависимости от значения переменной, которое в каждой сессии свое, и проч.


Гм... И потом догадывайся, почему триггер пошел по этой, а не другой ветке, ах да, переменная. И черт его знает, какое значение она имела в момент срабатывания?! Оно, это значение, ведь нигде не сохранилось? Напоминает PCHL из ассемблера.

Если это какого-то аттрибута зависит алгоритм обработки, то это должен быть аттрибут какой-либо сущности, а не переменная, IMHO.
29 окт 07, 15:33    [4851577]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

tru55 wrote:
> 2. Ну почему же? Например, таким способом реализованы стандартные
> функции, которые могут принимать различные типы аргументов (to_char, nvl
> и проч.). В противном случае пришлось бы на каждый тип аргумента
> создавать свою функцию
э.... а сейчас, простите, не создается?
да, имя - одно и тоже, "тело" - разное.
Плюс - гемор с определением - какой оверлоад применить?
В том же МС СКЛ - cast/convert(to_char/to_date)/isnull(nvl) - принимают
разные типы на вход - хотя ни оверлоадов ни пакетов - нетути :)

> 3. А что, остальные не используются или вызываются из других?
Используются, вызываются... Только гранты им не нужны - нужен грант
только на "корневую" процу - точку входа.

Posted via ActualForum NNTP Server 1.4

29 окт 07, 15:37    [4851609]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

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


А теперь, пожалуйста, сделайте DENY для одной процы из грантованного пакета.
29 окт 07, 15:47    [4851671]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
автор
А что, остальные не используются или вызываются из других? В любом случае, удобнее выдать гранты на несколько пакетов, чем на пару сотен процедур


А теперь, пожалуйста, сделайте DENY для одной процы из грантованного пакета.


Тема для размышления:
у пакета кроме интерфейса есть еще body

P.S. До завтра
29 окт 07, 17:05    [4852245]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709


А КОГДА ? КОГДА же наконец это произойдет ?

--
Картинка с другого сайта.

Posted via ActualForum NNTP Server 1.4

29 окт 07, 17:13    [4852289]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
pkarklin

Ну, давайте посмотрим... Только в "оригинальную" статью (есть ссылка в приведенной Вами стаье), а не в FAQ по табличным переменным, да еще по 2000 версии.

во первых надо догововорится: вы будете спорить с тем, что временные таблицы вызывают рекомпиляцию на каждый вызов существует рекомендация MS вместо них юзать табличные переменные везде где только можно относится и к mssql2к5 ? или это относилось лишь к версиям до sql2k5 ?

pkarklin

Т.е. Вы считаете, что если Вы по ходу дела (после того, как был создан план выполнения хп) залили во времянку пару-тройку сотен тысяч записей для обработки, то план, составленный на этапе копиляции (когда таблица пуста - читай отсутствует статистика) будет самым верным? IMHO, все с точностью до наоборот!

во вторых думаю вам нужно сначало осознать, что плана выполнения хп просто физически не существует, потому в остальной текст невьехал ...
мое мнение - тысячи рекомпиляций в минуту одних и тех же процедур - немаштабируемо и допускать такое в продакшене не представляется возможным.
в третих список вещей вызывающих рекомпиляцию:
MSDN
Recompilations Due to Certain Temporary Table Operations
Use of temporary tables in a stored procedure may cause the stored procedure to be recompiled every time the procedure is executed.

To avoid this, change the stored procedure so that it meets the following requirements:
• All statements that contain the name of a temporary table refer to a temporary table created in the same stored procedure, and not in a calling or called stored procedure, or in a string executed using the EXECUTE statement or sp_executesql stored procedure.
• All statements that contain the name of a temporary table appear syntactically after the temporary table in the stored procedure or trigger.
• There are no DECLARE CURSOR statements whose SELECT statements reference a temporary table.
• All statements that contain the name of any temporary table precede any DROP TABLE statement that references a temporary table.

DROP TABLE statements are not needed for temporary tables created in a stored procedure. The tables are automatically dropped when the procedure has completed.
• No statements creating a temporary table (such as CREATE TABLE or SELECT... INTO) appear in a control-of-flow statement such as IF... ELSE or WHILE.


pkarklin

И что здесь на Ваш взгляд "криминального"? Значения парамтеров положили в табличную переменную. Предположу, что для дальнейшей SET-ориентированной обработки. Если будет приведен полный текст или тынц на оный, можно будет о чем то рассуждать. А так - слив не засчитан.

ну например эта же процедура в Postgres выглядит так:
CREATE OR REPLACE FUNCTION MarketFeedFrame1 (
                                                IN MaxSize              smallint,
                                                IN price_quote          numeric(8,2)[],
                                                IN status_submitted     char(4),
                                                IN symbol               char(15)[],
                                                IN trade_qty            integer[],
                                                IN type_limit_buy       char(3),
                                                IN type_limit_sell      char(3),
                                                IN type_stop_loss       char(3)) RETURNS SETOF record AS $$
DECLARE
полный текст тынца от майкрософт можно взять тут:
http://www.tpc.org/results/FDR/tpce/dell_6850_082407_TPCE_SF.zip

pkarklin

Т.е. вот так вот абстрактно "i/o на tempdb"? В каком контексте? М.б. ВЫ о версионности? Могу Вас разочаровать версионность (успешно используем на OLTP системе) не создает какой-либо заметной нагрузки на tempdb. Почему, наверное стоит прильнуть к первоисточнику, например, Inside Microsoft® SQL Server™ 2005: The Storage Engine By Kalen Delaney Там даже и формула для расчета приведена.

временные таблицы так же хранятся и в темдб, где конкурируют в и/о с сортировками, табличными переменными, версионности и прочими прелестями свалеными майкрософтом в темдб.
29 окт 07, 17:19    [4852347]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.! wrote:
> во вторых думаю вам нужно сначало осознать, что плана выполнения хп
> просто физически не существует, потому в остальной текст невьехал ...
Угу. Физицски его нет, токмо "виртуально". А текст - надо читать.

> мое мнение - тысячи рекомпиляций в минуту одних и тех же процедур -
> немаштабируемо и допускать такое в продакшене не представляется возможным.
Более того - миллионы рекомпиляций в минуту - это еще хуже.
только мало кто умудряется достичь даже сотен. Если руки - не из...

> в третих список вещей вызывающих рекомпиляцию:
Вкратце: использование временных таблиц - вообще говоря вызывает
рекомпиляцию (не всегда, вроде как).
Вывод: избегайте использования временных таблиц.

Для проформы - можете и на обычных стейтментах использовать, к примеру
keepfixed plan - это чутка расслабляет по поводу изменения статистики.

Posted via ActualForum NNTP Server 1.4

29 окт 07, 18:00    [4852649]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Gluk (Kazan) wrote:
> Тема для размышления:
> у пакета кроме интерфейса есть еще body
насколько я понял, имелась в виду возможность дать разрешение только для
одной процедуры из пакета.
Т.е. - я могу её выполнить, ты - нет.
Хотя оба мы можем выполнить другую процедуру из этого же пакета.

Posted via ActualForum NNTP Server 1.4

29 окт 07, 18:07    [4852697]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
Alexsalog

Покажите как использовать ref_cursor в случае если в клиентской программе "пользователю" предоставлено поле для запроса, который будет тупо запущен на выполнение и от которого клиентская программа ждет набора записей как если бы это было "select * from...". На скуле это делалось:
exec SomeSP(parameters,parameters,parameters,);
Покажите правда - мне это очень нужно поработе. Хотя в современных условиях уже есть слава богу pipeline функции. Но, как бы это Вы сделали до 9-ой версии?
Мои предшественники плодили многоэтажные вью.

нихера не понял, parameters это что, входной текст sql statement'a типа 'drop database ...' ? не страшно ? как это связано с многоэтажными вью !? типа такого:

   TYPE generic_rc IS REF CURSOR;
   cv generic_rc;
BEGIN
   OPEN cv FOR
      'SELECT '|| column_list ||
        'FROM '|| table_list ||
       'WHERE '|| where_clause ;
http://www.oracle.com/oramag/oracle/01-jan/o11sql.html

2locky

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

locky
Вкратце: использование временных таблиц - вообще говоря вызывает
рекомпиляцию (не всегда, вроде как).
Вывод: избегайте использования временных таблиц.

не пойму это сарказм или меня услышали ? :)
29 окт 07, 19:13    [4852936]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.! wrote:
> в паре сотен процедур пара десятков запросов в каждой (с временными
> таблицами), которые дергают пара тысяч юзеров ... в чем проблема
> заполучить пару сотен тысяч рекомпиляций ?
угу. добавить еще пару сотен set ansi_nulls on|off...
к каждой третьей дописать with recompile....

"И не такое увидите" (С)


> locky
> Вкратце: использование временных таблиц - вообще говоря вызывает
> рекомпиляцию (не всегда, вроде как).
> Вывод: избегайте использования временных таблиц.
>
> не пойму это сарказм или меня услышали ? :)

не считайте себя "пророком в тёмном отечестве" :)
"Всё уже написано, до нас".
В БОЛ, в МСДН...
там же написано, что не только временные таблицы приводят к
рекомпиляции, но также - изменение статистики (и как с этим бороться),
"выдавливание" планов из кэша (и как с этим бороться)... и прочие "поводы".

Я себе могу достаточно явственно представить систему, в которой и правда
есть "пара сотен процедур", в каждой из которых есть "пара десятков
запросов" с временными таблицами. Более того - примерно такое я видел
(один раз, правда). Да, и тут, скорее всего - будет масса рекомпиляций.
Но это вовсе не означает, что такая практика есть "правильная и
одобряемая". Более того - это немного неправильно (хотя - от случая
зависит) и уж тем более - не совсем одобряемая.
Существуют "секретные техники" по борьбе с рекомпиляциями и/или - по
снижению ущерба от рекомпиляций (все они, кстати, описаны в том же БОЛ).

Я могу себе представить систему на оракле, у которой тоже будет масса
валидаций пакетов - дальше то что? Я ведь не буду по этому поводу тут
кричать, мол "оракл - это жуть! Немасштабировано! Валидации!
Рекомпиляции!" (я уж не говорю о "правильном применении" курсоров и
no_data_found exception).

при "кривых ручках" единтсвенная вещь, которая масштабируется хорошо -
это гемморой.
Банально, но - писать надо ПРАВИЛЬНО, тогда - геммороя будет меньше
(хотя - всё равно - будет).

Posted via ActualForum NNTP Server 1.4

29 окт 07, 19:33    [4852988]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
bk0010
Member

Откуда:
Сообщений: 5126
drev
И до какого процента рынка её раскрутили?:)

Процент существенно больше, чем вам кажется. Просто шума вокруг informix меньше: он просто работает, в том числе и во встраиваемых системах.
29 окт 07, 22:25    [4853311]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
2 All

Приношу свои извинения за долгое молчание. Был занят. Отвечу всем по-порядку, и, может быть тоже не сразу.

Gluk (Kazan)
Тема для размышления:
у пакета кроме интерфейса есть еще body


У меня предостаточно более важных тем для размышления. ;) Хотелось бы услышать простой ответ на вопрос: "Можно ли раздавать индивидуальные гранты на отдельные хп в пакете?" - "Да" или "Нет".
30 окт 07, 08:37    [4853782]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
во первых надо догововорится: вы будете спорить с тем, что временные таблицы вызывают рекомпиляцию на каждый вызов существует рекомендация MS вместо них юзать табличные переменные везде где только можно относится и к mssql2к5 ? или это относилось лишь к версиям до sql2k5 ?


Предлагаю договорится о следующем: Если особо не уговаривается, то речь будет вестись о 2005 версии сиквел сервера. Ок?

Спорить с тем, что "временные таблицы вызывают рекомпиляцию на каждый вызов" я безусловно буду, ибо это, мягко говоря, не соответствет действительности. И рекомендации МС как раз таки преследуют цель "корректного" использования временных таблиц, т.е. best practice в разработке кода. Именно "уклонение" от этой практики я имел ввиду под кривизной рук разработчика.


Yo.!
во вторых думаю вам нужно сначало осознать, что плана выполнения хп просто физически не существует,


Странно, жопа (сорри за мой французкий) есть, а слова такого нет. ((с) Вовочка)


--ну люблю я на ней экспериментировать. Так что она у меня и на 2005 поднята.
USE [pubs]
GO
--создадим тестовую хп
CREATE PROC TestProc
AS
CREATE TABLE #authors
	([au_id] varchar(11) NOT NULL,
	[au_lname] [varchar](40) NOT NULL,
 CONSTRAINT [UPKCL_auidind] PRIMARY KEY CLUSTERED 
(
	[au_id] ASC
))

INSERT #authors SELECT au_id, au_lname FROM dbo.authors

UPDATE
  A
SET
  au_lname = A1.au_lname
FROM
  dbo.authors A
  INNER JOIN #authors A1 ON
  A.au_id = A1.au_id

GO
--почистим кэш
DBCC FREEPROCCACHE 
GO
--выполним
EXEC TestProc
GO
--посмотрим планы
SELECT 
  cacheobjtype,
  objtype,
  objectid, 
  OBJECT_NAME(objectid),
  query_plan 
FROM
  sys.dm_exec_cached_plans
  CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE 
  objtype = 'Proc'
GO
--вау (без колонки query_plan, которая выдает план в виде xml)

Compiled Plan                                      Proc                 1032390747  TestProc

А вот если теперь результат колонки query_plan открыть в отдельном окне SSMS, сохранить его в файл с расширение sqlplan и открыть, опять же в SSMS, то увидим следующее:

К сообщению приложен файл. Размер - 0Kb
30 окт 07, 09:19    [4853889]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Чендлер
Guest
Alexsalog
Микрософт задавит оракл - 100%, только вопрос времени...
1) потому что во первых вся инфраструктура уже микрософтовская. вся! домен, коммуникейшн сервер. почта...

2) во вторых подход у них более правильный. чтобы администрировать оракл, администратору нужно знать кучу мелких недокументированных нюансов... микрософт в этом смысле - небо и земля

3) если посмотреть, то последняя версия sql-сервера наравне с oracle эксплуатируется на крупных базах . есть сайт со статистикой.

4) а в четвертых - слишком лакомый куок. чтобы такая компания как микрософт не подмяла его под себя... а у них есть все возможности

Конечно, огромный сонм unix систем во всем мире - это сильный аргумент за оракл
но

5) Против unix систем - комплексный подход microsoft и трудности с интеграцией... во вторых никто не будет строить свой бизнес на некомерческом ПО, коим unix является, в третьих microsoft уже выпустила сервер без графической оболочки почти, с улучшенной производительностью...
это один из вариантов установки сервера 2008. Там и многие команды юниксовые работают
Плюс ко всему, есть режим работы в совместимости с unix приложениями... если он будет работать как нужно - unix во многих местах пойдет на йух

1. и чо?
2. хрень
3. эксплатируется, а терь спроси у тех админов каково им
4. у майкрасофта денег не хватет
5. на "некомерческом" ещё как, уже почти выпустила гы гы, это наврно также как и лонгхорн, мы его почти сделали, чучуть осталось. Совместиомсть, да, да майкрософт взял линукс и поменял логотипчик на свой :)
30 окт 07, 09:30    [4853919]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
потому в остальной текст невьехал


Жаль... Я хотел до Вас донести, что оптимальный план для временной таблицы с 5 записями и для 50 000 записей может\будет отличаться хотя бы в плане метода доступа и стратегии объединения.

Yo.!
мое мнение - тысячи рекомпиляций в минуту одних и тех же процедур - немаштабируемо и допускать такое в продакшене не представляется возможным.


Мое тоже. Но чтобы достичь такого показателя, надо иметь кривизну рук более чем 3ей степени. Впрочем, locky по этому поводу высказался. Мне добавить больше нечего.

Yo.!
в третих список вещей вызывающих рекомпиляцию:


Гм... С точностью до наоборот. Это как раз список подходов, которые не приводят к перекомпиляции.

Yo.!
ну например эта же процедура в Postgres выглядит так:


И что из этого следует?!

Yo.!
полный текст тынца от майкрософт можно взять тут:


Большой тынц. Нужно некоторое время на его "осознание".

Yo.!
временные таблицы так же хранятся и в темдб, где конкурируют в и/о с сортировками, табличными переменными, версионности и прочими прелестями свалеными майкрософтом в темдб.


Так можно договорится до обсурда: "Таблицы, индексы и прочее хранится в продакшен бд где все это конкурирует друг с другом". tempdb - это такая же (за некоторым исключением в плане модели восстановления) бд, как и все остальные. И оптимизация работы с ней такая же, как и для всех отсальных бд. Не стоит вешать на tempdb ярлык перегруженной i\o. У Вас есть результаты практичексих тестов? В студию, плиз...
30 окт 07, 09:52    [4853990]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Чендлер
3. эксплатируется, а терь спроси у тех админов каково им


У Вас есть тексты их отзывов?! Можете сюда выложить?
30 окт 07, 10:21    [4854134]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
2pkarklin

то что вы видите это планы sql queries которые встречаются в хп, никакого плана процедурного расширения t-sql и хп. оптимизатору пофигу от куда взялся запрос - из хп, напрямую с клиента или dblink.
по остальному собствено locky уже все что я хотел сказал
30 окт 07, 10:49    [4854287]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
то что вы видите это планы sql queries которые встречаются в хп


Еще бы! А чему там другому быть?

Yo.!
никакого плана процедурного расширения t-sql и хп.


Эээ... Плана чего? T-SQL - это и есть процедурное расширение. Масло маслянное, получается. В кеше присутствует скомпилированный план именно хп, как бача, а не как отдельные планы запросов, ее составляющих. При повторном вызове этой хп будет ипользоваться скомпилированный план. Если Вы отдельно отправите три запроса, находящихся внутри хп, то получите три отдельных плана:

USE [pubs]
GO

DBCC FREEPROCCACHE 
GO

CREATE TABLE #authors
	([au_id] varchar(11) NOT NULL,
	[au_lname] [varchar](40) NOT NULL,
 CONSTRAINT [UPKCL_auidind] PRIMARY KEY CLUSTERED 
(
	[au_id] ASC
))
GO

INSERT #authors SELECT au_id, au_lname FROM dbo.authors
GO

UPDATE
  A
SET
  au_lname = A1.au_lname
FROM
  dbo.authors A
  INNER JOIN #authors A1 ON
  A.au_id = A1.au_id COLLATE Cyrillic_General_CI_AS
GO

SELECT 
  cacheobjtype,
  objtype,
  objectid, 
  OBJECT_NAME(objectid),
  query_plan 
FROM
  sys.dm_exec_cached_plans
  CROSS APPLY sys.dm_exec_query_plan (plan_handle)
GO

DROP TABLE #authors

cacheobjtype                                       objtype              objectid
-------------------------------------------------- -------------------- -----------
Compiled Plan Adhoc NULL
Compiled Plan Adhoc NULL
Compiled Plan Adhoc NULL

(3 row(s) affected)
30 окт 07, 11:05    [4854390]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
2 Yo.!
Для понимания причин перекомпиляции процедур надо понимать исторические предпосылки, которые привели к этому.

Временные таблицы (ВТ) появились очень давно, во вском случае в версии 4 они уже были. Но были ограничения - процедура не видела ВТ, которые создала не она, ВТ(как впочем и все другие объекты) нельзя было создавать в транзакции. В 6-й версии последнее ограничение сняли.
Но всё равно ВТ работали несколько странно - если в процедуре был оператор создания ВТ, то он мог быть для каждой таблицы только один(т.е. нельзя было написать if 2>2 create table #t (i int) else create table #t(i char) ). Этот оператор анализировался и при компиляции процедуры проверялось использование полей ВТ. Т.е. фактически это был не оператор создания, а декларация ВТ.

В 7-й версии(или в 2000?) в процедуре стали видны ВТ, созданные извне. Т.е. при создании процедуры может быть обращение к объектам, которых может еще не быть при компиляции и которые могут постоянно менять структуру. Процедуры, в которых есть такая неопределённость, приходится компилировать непосредственно перед запуском.
В принципе писать такие процедуры считается плохим тоном (хотя бы с точки зрения сопровождения) и используется только когда другие решения еще хуже.

В 2000-м решили что лучше иметь полноценную декларацию ВТ и придумали таблицы-переменные - фактически это те же самые ВТ, которые были в 4-6-й версиях, ну разве что не логируются.
30 окт 07, 11:06    [4854401]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
SergSuper
Но были ограничения - процедура не видела ВТ, которые создала не она, ВТ(как впочем и все другие объекты) нельзя было создавать в транзакции. В 6-й версии последнее ограничение сняли.
В 7-й версии(или в 2000?) в процедуре стали видны ВТ, созданные извне.


По моему - вы что-то путаете...
Я, честно сказать, уже сам с трудом помню - что там было в 6.5, но мне кажется - что ВТ, созданные извне там уже были видны.
30 окт 07, 11:41    [4854659]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
locky
По моему - вы что-то путаете...
Я, честно сказать, уже сам с трудом помню - что там было в 6.5, но мне кажется - что ВТ, созданные извне там уже были видны.


Слова SergSuper подтверждаю. На момент выполнения CREATE PROCEDURE в версии 6.5 временная таблица должна была сущестовать в этой сессии.
30 окт 07, 11:47    [4854707]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Чендлер
Guest
pkarklin
Чендлер
3. эксплатируется, а терь спроси у тех админов каково им


У Вас есть тексты их отзывов?! Можете сюда выложить?

к сажелению нету, просто думаю что обязательно нужно у них спросить про это
30 окт 07, 11:48    [4854719]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
pkarklin
В кеше присутствует скомпилированный план именно хп, как бача, а не как отдельные планы запросов, ее составляющих. При повторном вызове этой хп будет ипользоваться скомпилированный план. Если Вы отдельно отправите три запроса, находящихся внутри хп, то получите три отдельных плана:


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


2SergSuper
по ВТ мне все понятно, я пытался показать, что "вкусности оракла" легко и непринужденно временными таблицами обойти не получается ...
30 окт 07, 12:08    [4854836]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
locky

Т.е. - я могу её выполнить, ты - нет.
Хотя оба мы можем выполнить другую процедуру из этого же пакета.


Единицей безопасности является пакет.
Помимо интерфейса он может иметь скрытую реализацию.
Плюс достаточное количество бонусов, чтобы сделать полезность пакетов в Oracle необсуждаемой
В силу архитектурных различий, для MS SQL эти бонусы малоактуальны как таковые (типа всю системы менять надо)
30 окт 07, 12:48    [4855131]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить