Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 10 11 12 13 14 [15] 16 17 18 19 .. 24   вперед  Ctrl
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

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

pkarklin wrote:
> SELECT
> definition
> FROM
> sys.sql_modules
> WHERE
> object_id = OBJECT_ID('uspGetWhereUsedProductID')
Хотите я это код - поломаю? ;)
Posted via ActualForum NNTP Server 1.4


Да.
20 июл 07, 14:54    [4416392]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

pkarklin wrote:
> Да.
use tempdb
go
create procedure sp_help as begin return 0 end
go
SELECT
   definition
FROM
   sys.sql_modules
WHERE
   object_id = OBJECT_ID('sp_help')

Posted via ActualForum NNTP Server 1.4

20 июл 07, 14:54    [4416399]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
а что произойдет ?
а то страшновато на боевой :)
20 июл 07, 14:56    [4416414]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
SergSuper
drev
1. Вы обратили внимание каким образом выбирался код?
Нет. А по каким косвенным признакам можно было догадаться как он выбирался? Во всяком случае Вы нигде не указали что были выбраны примеры неудачного кода.

drev
Да, есть люди, которые пишут не очень удачный код. И таких - большинство. И грош цена такой СУБД, которая будет работать лучше всех при оптимально написанном коде, и значительно хуже чем остальные в других случаях.

Ну так Вы определитесь - это писали люди, которые пишут не очень удачный код, либо люди у которых кое-какой авторитет ест.

drev
2. Вы обратили внимание, что я ссылался на первый и последний отрывок в цитированном Вами высказывании, а Вы нет?
Нет. Но даже если и так - расшифруйте о чём это должно мне говорить.

drev
3. Через мои руки прошло значительно больше 100М строк Оракловского кода. Мне кажется, я с большим основанием, чем Вы могу утверждать, что встречается часто, а что нет? Или Вы располагаете более репрезентативной выборкой?

"Учение Ленина вечно, потому что оно верно". Давайте будем избегать такой аргументации и несколько учительского, что ли, тона.
У меня такой выборки нет, но скажем так - такие случаи бывают и отождествлять if update() c :new<>:old нельзя



1. Ровно под отрывками было сообщение:

drev
softwarer
..



Вышеприведённые примеры взяты с первой половины первой страницы яндекса при запросе !(update from inserted)

Достаточно?:)

Кстати, join inserted, deleted из той же выборки встретился 1 раз.


Постинги были ответом на вопрос, как часто встречаются использования inserted без join с deleted.

2.-3. Первый и последний постинги взяты с сайтов intuit и примеров к сертификационному экзамену для MS SQL Server соответственно. Я предполагаю наличие некоторого авторитета у таких источников, или я не прав?

Откуда взяты остальные примеры, см. пункт 1.

4. Я с Вами согласен по обоим пунктам. Вопрос лишь в том, насколько часто? За тон извините.
20 июл 07, 14:56    [4416423]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

Gluk (Kazan) wrote:
> а что произойдет ?
> а то страшновато на боевой :)
Ничего стращного - просто дефинишн объекта не вернется - всего делов :)

object_id вернет id из master, а не из текущей базы.

Posted via ActualForum NNTP Server 1.4

20 июл 07, 14:57    [4416432]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
а кстати, жгущий вопрос. QA в 2005 убрали или я его просто не нашел ???
20 июл 07, 14:58    [4416452]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

Gluk (Kazan) wrote:
> а кстати, жгущий вопрос. QA в 2005 убрали или я его просто не нашел ???
Там вместо него щаз SSMS - некая помесь EM и QA - не скажу, что она меня
радует (кой-чо - просто раздражает) - но работать можно.

Posted via ActualForum NNTP Server 1.4

20 июл 07, 15:00    [4416462]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

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

create procedure sp_help ...


SELECT
  definition
FROM
  sys.sql_modules m
  INNER JOIN sys.objects o ON
  m.object_id = o.object_id
WHERE
  o.name = 'sp_help'
20 июл 07, 15:00    [4416469]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
ну этого то зверя я постоянно юзаю :(
жаль, QA лучше был
20 июл 07, 15:01    [4416475]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

pkarklin wrote:
> SELECT
> definition
> FROM
> sys.sql_modules m
> INNER JOIN sys.objects o ON
> m.object_id = o.object_id
> WHERE
> o.name = 'sp_help'
Отож-бо!
В боле я не нашел описание такого поведения object_id :(
пришлось переписывать всё в вышеуказанном стиле.

зы еще схему не забыть указать

Posted via ActualForum NNTP Server 1.4

20 июл 07, 15:03    [4416504]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
ну этого то зверя я постоянно юзаю :(
жаль, QA лучше был


Я до сих пор с 2005 из под QA от 2000 работаю. Вот только генерация скриптов и поиск объектов уже не работает.
20 июл 07, 15:03    [4416515]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

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

pkarklin wrote:
> SELECT
> definition
> FROM
> sys.sql_modules m
> INNER JOIN sys.objects o ON
> m.object_id = o.object_id
> WHERE
> o.name = 'sp_help'
Отож-бо!
В боле я не нашел описание такого поведения object_id :(
пришлось переписывать всё в вышеуказанном стиле.

зы еще схему не забыть указать
Posted via ActualForum NNTP Server 1.4


И чего "отож-бо"? :) Ну не стоит называть пользовательские хп с 'sp'. Как это прямо и указано в документации.
20 июл 07, 15:07    [4416556]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

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

SELECT OBJECT_DEFINITION(OBJECT_ID('uspGetWhereUsedProductID'))
20 июл 07, 15:10    [4416581]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

pkarklin wrote:
> И чего "отож-бо"? :) Ну не стоит называть пользовательские хп с 'sp'.
> Как это прямо и указано в документации.
Между "не рекомендуеца" и "запрещено" - большая разница :(
тут дело не в sp, а в том, что в мастере есть проца с таким же именем

Posted via ActualForum NNTP Server 1.4

20 июл 07, 15:10    [4416583]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

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

тут дело не в sp, а в том, что в мастере есть проца с таким же именем


сначала дело именно в sp. Именно это заставляет искать сервер в master. Но вот это уже выглядит не кошерно:

SELECT
   definition
FROM
   sys.sql_modules
WHERE
   object_id = OBJECT_ID('tempdb.dbo.sp_help')

Извините, но явно заданы префиксы бд и схемы. :(
20 июл 07, 15:18    [4416658]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

pkarklin wrote:
> сначала дело именно в sp. Именно это заставляет искать сервер в master.
йопт... ток-што проверил...
вроде как раньше - сначала искалось в текущей базе, а только потом -
если начинается с sp_ - то в мастере?
А щаз - сразу в мастере ищет :-(

Posted via ActualForum NNTP Server 1.4

20 июл 07, 15:23    [4416705]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
если начинается с sp_ - то в мастере?
А щаз - сразу в мастере ищет :-(


Поведение изменилось. :(
20 июл 07, 15:30    [4416766]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
softwarer
drev
И грош цена такой СУБД, которая будет работать лучше всех при оптимально написанном коде, и значительно хуже чем остальные в других случаях.

Это отдельная глупость, но не стоит сосредотачиваться на ней и уводить разговор в сторону. Напомню позицию, которую Вы сейчас отстаиваете: решение, которое стимулирует писать плохой код (охарактеризованный Вами выше). Иначе говоря, Вы предлагаете создавать трудности, ради которых потом "обучать СУБД плохо работать с хорошим кодом и хорошо - с плохим". Странный подход, напоминает позицию тех программистов, которые говорят "пиши так, чтобы потом всю жизнь это переделывать и дорабатывать".


Ну почему сразу глупость?:)

Два примера:

1. В своё время в Оракл была проблема, когда шла ошибка из-за переполнения внутреннего кэша стэйтментов.

При этом, при использовании Prepared Statements работа ускорилась.

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

Результат: Реализацию поменяли, насколько я помню с потерей производительности.

2. В своё время очень хорошо написанные запросы на Informix работали быстрее, чем на Оракл. Однако шаг вправо, шаг влево..Было очень печально. я не уверен, что это было одной из основных причин падения, но...

Вам не кажется, что приведённые примеры коррелируют с моим высказыванием? Особенно первый?
20 июл 07, 15:34    [4416808]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
drev
Том Кайт с пеной у рта кричал, что нужно использовать только Prepared Statements (и это было оптимально), a ему объясняли, что он идиот, и что никто переписывать ничего не будет.


Какая интересная трактовка
Эта дорога идет в двух направлениях. В MS SQL появилась версионность, а в Oracle с пугающей скоростью появляются попсовые рющечки и фенечки (и не с потерей производительности, смешнее там все)
20 июл 07, 16:00    [4417021]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
Gluk (Kazan)

Какая интересная трактовка

это он про параметр cursor_sharing ?
20 июл 07, 16:05    [4417065]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
ага
20 июл 07, 16:11    [4417105]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Gluk (Kazan)
ага


и про последующее подглядывание за переменными
20 июл 07, 16:12    [4417109]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67464
Блог
drev
Ну почему сразу глупость?:)
Два примера:

Что ж, я ожидал, что Вы захотите воспользоваться этой лазейкой, но надеялся на нечто более достойное.
20 июл 07, 16:28    [4417203]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
drev
Ну почему сразу глупость?:)

сам догадаешся или рзжувать
20 июл 07, 16:28    [4417207]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
softwarer
drev
О чём Вы? Какой авторитет у анонима?:)

Именно поэтому я упомянул авторитет у "мировой общественности", а не у "форума".

drev
А вот у людей, писавших код, который Вы отвергли, часть из него не читая, кое-какой авторитет есть. Первый отрывок из Интуит, последний - из примеров к сертификационному экзамену.

Может быть и так. Может быть дело в "мне тут Мойше по телефону Карузо напел", могут быть и другие варианты - не суть. Важно то, что в контексте обсуждаемого вопроса они обосновывают разве что частоту допущенных ошибок.

drev
Как Вам сказать...

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

drev
Догадываюсь:)

OK. Итого, факт осознанной подмены понятий зафиксирован. Странная терминология, используемая в ветке про парсеры, получает гипотетическое объяснение. Про парсеры, кстати, надеюсь таки написать сегодня вечером.

drev
Вы серьёзно считаете, что случаи, когда значение в результате осознанной попытки присвоения осталось тем же, составляют более одной тысячной?

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



Ок. Давайте разберёмся. Конечно, было бы проще запустить показательный пример, но - пока лень.

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

Что же происходит на самом деле.

Предположим, что UPDATE выполнился на Х записях, из которых в У интересующие нас поля НЕ поменялись.

1. Затраты на вариант без проверки

а) вычитываем Х записей из лога
б) вычитываем Х записей из основной таблицы
в) делаем один (1) join
г) изменяем Х записей основной таблицы

2. Затраты на вариант без проверки

а) вычитываем 2*Х записей из лога
б) вычитываем Х записей из основной таблицы
в) делаем два (2) joins и сравнения
г) изменяем Х - У записей основной таблицы

В пункте в затраты во втором варианте значительно больше, но пока его отбросим.

Предположим, для простоты, что затраты на чтение записи из лога равны затратам на чтение записи из основной таблицы, хотя из лога больше.

Предположим, что затраты на изменение записи в 3 раза больше, чем на чтение. На самом деле меньше, но.. проехали.

получаем:

1. Х + Х + 3*Х = 5*Х

2. 2*Х + Х + 3*(Х - У) = 6* Х - 3 * У

Решая несложное уравнение, получаем, что варианты равноценны, если для 33% записей не произошло изменения значения полей.

Я думаю, даже Вы согласитесь, что это завышенная оценка?

Далее.

Предположим, что записи основной таблицы находятся в кэше. Это бывает, не так ли?

В этом случае, вариант с проверкой ВСЕГДА проигрывает первому.

Такая математика понятна?
20 июл 07, 16:39    [4417282]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 10 11 12 13 14 [15] 16 17 18 19 .. 24   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить