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

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

совершенно не факт, кстати.
Современные оптимизаторы учитывают FK при построении планов запросов
Ясное дело. FK же тянет за собой индекс. Индекс обслуживать надо всегда, а вот будет ли он эффективно использоваться в работе - не факт.

FK может существовать без индекса, но это скорее нонсенс.

оптимизатор учитывает не индекс, а именно FK, упрощая соединения путём выбрасывания ненужных таблиц
21 мар 12, 12:39    [12287047]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
pkarklin
Yo.!
бэкапы оракла можно настраивать через гуй точно так же как и в мсскл


Т.е. вот этот вот "недостаток MS SQL"

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


за "недостаток" не считаем? :)


Мало делать бекапы - нужно ещё уметь из них восстанавливать, решать возникающие по ходу проблемы, кои Oracle щедро рассыпает. Вот тут-то караул и возникает. Разумеется, любой высокооплачиваемый IT-специалист сложностям должен быть рад. Ибо чем сложнее, тем больше его значимость, меньше конкуренция и выше зарплаты.
21 мар 12, 12:43    [12287102]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6640
locky
Siemargl
пропущено...
Ясное дело. FK же тянет за собой индекс. Индекс обслуживать надо всегда, а вот будет ли он эффективно использоваться в работе - не факт.

FK может существовать без индекса, но это скорее нонсенс.

оптимизатор учитывает не индекс, а именно FK, упрощая соединения путём выбрасывания ненужных таблиц
Интересно бы увидеть пример, если не реальный, то хотя бы принцип.
21 мар 12, 12:44    [12287108]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
Barkan
Member

Откуда: Дремучее заМКАДье
Сообщений: 504
Ден,

Спасибо за ссылку.
Особенно мне понравилось вот это:
Индекс — это упорядоченное подмножество элементов таблицы, для которой создан индекс. Применение индексов позволяет ускорить поиск и сортировку. Чем меньше размер ключа индекса, тем меньше места занимает ключ и тем выше его эффективность. Поскольку первичные ключи таблиц часто используются в других таблицах в качестве внешних ключей, рекомендуется минимизировать длину первичных ключей. Если в таблице отсутствуют столбцы небольшой длины, которые могут использоваться как первичный ключ, в качестве первичного ключа можно использовать столбец удостоверения, реализованный в виде целочисленного значения.
21 мар 12, 12:44    [12287114]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
locky
Member

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

оптимизатор учитывает не индекс, а именно FK, упрощая соединения путём выбрасывания ненужных таблиц
Интересно бы увидеть пример, если не реальный, то хотя бы принцип.


Дурацкий пример, но навскидку не придумывается, а вспоминать лень
create table Parent(id int primary key)
go

create table Slave(ParentId int not null references Parent(id))
go


--SET SHOWPLAN_TEXT on

select ParentId from Slave where exists(select * from Parent where id = ParentId)


план если есть FK


StmtText
-------------------------------------------------
|--Table Scan(OBJECT:([tempdb].[dbo].[Slave]))


План если нет FK
StmtText
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Nested Loops(Inner Join, OUTER REFERENCES:([tempdb].[dbo].[Slave].[ParentId]))
|--Table Scan(OBJECT:([tempdb].[dbo].[Slave]))
|--Clustered Index Seek(OBJECT:([tempdb].[dbo].[Parent].[PK__Parent__3213E83F46535886]), SEEK:([tempdb].[dbo].[Parent].[id]=[tempdb].[dbo].[Slave].[ParentId]) ORDERED FORWARD)
21 мар 12, 12:56    [12287217]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6640
locky, ОК.

Т.е. просто нет двойной работы - уже проверенное с помощью FK при вставке данных один раз, при множественных запросах потом повторной проверки не требует.
21 мар 12, 13:02    [12287271]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
locky
Member

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

Т.е. просто нет двойной работы - уже проверенное с помощью FK при вставке данных один раз, при множественных запросах потом повторной проверки не требует.

Не только.
FK дает понятие о том, что может быть, а чего "не может быть в принципе", по итогу из сложных запросов выпадают (сокращаются) промежуточные (и ненужные для этого конкретного запроса) таблицы, план становится проще, выполнение - быстрее.

Особенно хорошо это видно при использовании "обобщенных view для представления полных данных".
21 мар 12, 13:07    [12287322]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
Ден
Member

Откуда: Москва
Сообщений: 2084
Barkan,

Не хотел вдаваться в обсуждение, кинул можно сказать первую попавшуюся ссылку про денормализацию (остальное не читал). А JD они намеренно денормализовали данные основных таблиц, т.к если объединять в запросе, то наверно 20-30 таблиц придется, чтоб получить то что выдается в форме P4210. А вобщем, данные там нормализованы, просто вместо подстановки PK из справочника, помимо него копируются(дублируются) из него данные. ERP сочетают в себе OLTP и DW, т.е по транзакционным таблицам будут строить отчеты.
21 мар 12, 13:20    [12287471]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
MasterZiv
Member

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


> FK дает понятие о том, что может быть, а чего "не может быть в принципе", по
> итогу из сложных запросов выпадают (сокращаются) промежуточные (и ненужные для
> этого конкретного запроса) таблицы, план становится проще, выполнение - быстрее.

Чёто ты гонишь. FK можно создать и после вставки данных, данные при этом не
будут соответствовать ограничению, реализуемому FK. Запросы при этом должны
выдавать РЕАЛЬНЫЕ данные, а не то, что могло бы быть, если бы FK существовал
в БД всегда.

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

Posted via ActualForum NNTP Server 1.5

21 мар 12, 13:30    [12287620]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
то наверно 20-30 таблиц придется,


Современные СУБД очень хорошо справляются со звездой. http://msdn.microsoft.com/ru-ru/library/bb522541.aspx
21 мар 12, 13:33    [12287660]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
Barkan
Member

Откуда: Дремучее заМКАДье
Сообщений: 504
Ден,

Ладно, фиг с ней, с JDE и её чудесным языком.
Для программистов, которым придётся лепить "заплатки и кармашки"
к стандартной конфигурации это конкретное попадалово.
Придётся видимо новую работу искать. Ж:)
21 мар 12, 13:35    [12287688]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
locky
Member

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

> FK дает понятие о том, что может быть, а чего "не может быть в принципе", по
> итогу из сложных запросов выпадают (сокращаются) промежуточные (и ненужные для
> этого конкретного запроса) таблицы, план становится проще, выполнение - быстрее.

Чёто ты гонишь. FK можно создать и после вставки данных, данные при этом не
будут соответствовать ограничению, реализуемому FK. Запросы при этом должны
выдавать РЕАЛЬНЫЕ данные, а не то, что могло бы быть, если бы FK существовал
в БД всегда.

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



Ну, насчет "гонишь" - это не ко мне.
Что касается вас, дражайший, то почитайте на тему trusted foreign keys, а также не предмет опций созданий FK (check/nocheck)

Что касаемо "никогда не слышал", то вот из того о чем я никогда не слышал - можно целую библиотеку составить. Не сомневаюсь, что это справедливо и в Вашем случае.
21 мар 12, 13:43    [12287775]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
MasterZiv
FK можно создать и после вставки данных,

Можно.

MasterZiv
данные при этом не будут соответствовать ограничению, реализуемому FK.

Да ну правда что ли? Ну попробуйте, попробуйте.

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

MasterZiv
Никогда в общем не слыхал, чтобы FK как-то участвовали в оптимизации запросов,

Ну можно почитать документацию. Вот, например, полезная табличка.
21 мар 12, 13:49    [12287849]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
MasterZiv
Member

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

> И хотелось бы знать, на опыте какой именно СУБД Вы выдвигаете категорическое
> утверждение вида "иначе и не бывает".

Да хоть MSSQL, хоть MySQL. Только где ты там видел "утверждение вида "иначе и не
бывает" ?

> Ну можно почитать документацию. Вот
> <http://docs.oracle.com/cd/B10500_01/server.920/a96520/qr.htm#50063>, например,

А, это Оракул, Великий и Ужасный ...

Posted via ActualForum NNTP Server 1.5

21 мар 12, 15:10    [12288737]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
MasterZiv
> И хотелось бы знать, на опыте какой именно СУБД Вы выдвигаете категорическое
> утверждение вида "иначе и не бывает".

Да хоть MSSQL, хоть MySQL. Только где ты там видел "утверждение вида "иначе и не
бывает" ?


Матчасть изучатьне пробовали? Так, смеха ради

автор
WITH CHECK | WITH NOCHECK
Specifies whether the data in the table is or is not validated against a newly added or re-enabled FOREIGN KEY or CHECK constraint. If not specified, WITH CHECK is assumed for new constraints, and WITH NOCHECK is assumed for re-enabled constraints.

If you do not want to verify new CHECK or FOREIGN KEY constraints against existing data, use WITH NOCHECK. We do not recommend doing this, except in rare cases. The new constraint will be evaluated in all later data updates. Any constraint violations that are suppressed by WITH NOCHECK when the constraint is added may cause future updates to fail if they update rows with data that does not comply with the constraint.

The query optimizer does not consider constraints that are defined WITH NOCHECK. Such constraints are ignored until they are re-enabled by using ALTER TABLE table CHECK CONSTRAINT ALL.


Первое выделение - насчет "не бывает"
Второе - насчет "никогда не слыхал, чтобы оптимизатор".
21 мар 12, 15:47    [12289129]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
SQL Bigot
Member

Откуда:
Сообщений: 841
pt12pt
Триггеры на уровне записи...Использование этой штуки нужно когда необходимо изменять колонку PK

Никому об этом не говори :) Использование "этой штуки" нужно, если надо что-то делать\проверять перед или после манипуляций с записью.

PS:А ещё Оракл может работать на линуксе, в отличие от.
21 мар 12, 16:22    [12289478]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SQL Bigot
Использование "этой штуки" нужно, если надо что-то делать\проверять перед или после манипуляций с записью.


Для этого не нужны триггеры уровня записи.
21 мар 12, 16:28    [12289534]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
pkarklin
SQL Bigot
Использование "этой штуки" нужно, если надо что-то делать\проверять перед или после манипуляций с записью.


Для этого не нужны триггеры уровня записи.

Хотя иногда чертовски удобны.
21 мар 12, 16:29    [12289546]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
SQL Bigot
Member

Откуда:
Сообщений: 841
pkarklin
Для этого не нужны триггеры уровня записи.

Вот только не "не нужны", а "без них можно обойтись", затратив на это лишние телодвижения :)
21 мар 12, 16:42    [12289652]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SQL Bigot
Вот только не "не нужны", а "без них можно обойтись", затратив на это лишние телодвижения :)


Давайте рассмотрим конкретный пример?
21 мар 12, 16:44    [12289682]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
SQL Bigot
Member

Откуда:
Сообщений: 841
pkarklin
Давайте рассмотрим конкретный пример?

Классический(?):журнал всех(в том числе и неудачных) попыток манипуляций с записью без включения аудита.
21 мар 12, 16:51    [12289738]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SQL Bigot
Классический(?):журнал всех(в том числе и неудачных) попыток манипуляций с записью без включения аудита.


Можно расшифровать термин "неудачных"?
21 мар 12, 16:56    [12289790]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
pkarklin
SQL Bigot
Классический(?):журнал всех(в том числе и неудачных) попыток манипуляций с записью без включения аудита.


Можно расшифровать термин "неудачных"?

С роллбэком
но тут, видимо, нужнее не row-level-trigger, а автономные транзакции
21 мар 12, 16:57    [12289801]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
locky
но тут, видимо, нужнее не row-level-trigger, а автономные транзакции


Угу. В легкую реализуются через CLR сборку с self-коннектом.
21 мар 12, 16:59    [12289824]     Ответить | Цитировать Сообщить модератору
 Re: Чем MS SQL Server хуже Oracle Database?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
locky
С роллбэком
но тут, видимо, нужнее не row-level-trigger, а автономные транзакции

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