Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 В каких СУБД хинты носят чисто директивный характер?  [new]
директивный характер
Guest
Во всех СУБД хинты имеют строго директивный характер как например в MS SQL или есть СУБД в которых хинты являются лишь советами оптимизатору?

Директивный - т.е. если я указал соединять Sort Merge Join, а оптимизатор считает что быстрее соединять Nested Loop Join, то все равно он соединит по SMJ предварительно отсортировав таблицы.
24 июн 12, 18:14    [12766664]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
директивный характер
хинты имеют строго директивный характер как например в MS SQL


Далеко не всегда:

Warning: Index hints supplied for ... will be ignored 
24 июн 12, 21:50    [12767198]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
директивный характер
Guest
pkarklin
директивный характер
хинты имеют строго директивный характер как например в MS SQL


Далеко не всегда:

Warning: Index hints supplied for ... will be ignored 

Это происходит когда в принципе не возможно использовать индекс?
24 июн 12, 22:21    [12767297]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
pkarklin
Member

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


В данной ситауции - да.
24 июн 12, 22:29    [12767313]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
директивный характер
Guest
А есть такие СУБД в которых хинт в принципе может сработать, но оптимизатор его не использует, т.к. считает что без него лучше?
24 июн 12, 23:36    [12767515]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
директивный характер
А есть такие СУБД в которых хинт в принципе может сработать, но оптимизатор его не использует, т.к. считает что без него лучше?


А можно это перевести на русский: "хинт сработал, но оптимизатор его не использует"?!
24 июн 12, 23:39    [12767529]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
Dimitry Sibiryakov
Member

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

pkarklin
А можно это перевести на русский: "хинт сработал, но оптимизатор его не
использует"?!

Перевожу: сервер говорит "ты, пользователь, дурак по определению, я - умнее, а потому
поклал на твои хинты прибор".

Posted via ActualForum NNTP Server 1.5

25 июн 12, 00:44    [12767685]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
директивный характер
Guest
pkarklin
директивный характер
А есть такие СУБД в которых хинт в принципе может сработать, но оптимизатор его не использует, т.к. считает что без него лучше?


А можно это перевести на русский: "хинт сработал, но оптимизатор его не использует"?!

Всё таки "хинт в принципе может сработать" и "хинт сработал" это разные вещи :)

Я про случай описанный в первом сообщении, если допустим через хинты сказали делать SMJ, а не смотря на это СУБД сделала NLJ/HJ, в каких СУБД такое возможно?
25 июн 12, 00:45    [12767688]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
директивный характер
А есть такие СУБД в которых хинт в принципе может сработать, но оптимизатор его не использует, т.к. считает что без него лучше?

Буквально так. Имел несколько лет назад неприятные грабли с ASE 12.x.y (не помню версию к сожалению).
Сервер давал по морде варнингами исключительно в некоторых случаях для одного и того же запроса (получение состава документа по его id). Для одних документов проблем не было. Для других получал warning и игнорирование хинта. Если очень надо - могу даже по истории доработок попробовать найти номер "ошибки", которая прилетала. В релиз не ушло по причине отказа от Abstract Plan в первоначальной форме. Было ли это косяком конкретного билда ASE - сказать не возьмусь.
26 июн 12, 00:13    [12773799]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
MasterZiv
Member

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

On 06/26/2012 01:13 AM, Сергей Васкецов wrote:

> А есть такие СУБД в которых хинт в принципе может сработать, но оптимизатор его
> не использует, т.к. считает что без него лучше?
>
>
> Буквально так. Имел несколько лет назад неприятные грабли с ASE 12.x.y (не помню
> версию к сожалению).

Это не так.

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

Т.е. хинт не срабатывает только тогда, когда он в принципе срабатывать не
может.


> Сервер давал по морде варнингами исключительно в некоторых случаях для одного и
> того же запроса (получение состава документа по его id). Для одних документов
> проблем не было. Для других получал warning и игнорирование хинта. Если очень
> надо - могу даже по истории доработок попробовать найти номер "ошибки", которая
> прилетала. В релиз не ушло по причине отказа от Abstract Plan в первоначальной
> форме. Было ли это косяком конкретного билда ASE - сказать не возьмусь.

Ну правильно, но он не использовал хинт потому что НЕ МОГ.
Это совсем не "СУБД в которых хинт в принципе может сработать, но оптимизатор
его не использует, т.к. считает что без него лучше" ?


Posted via ActualForum NNTP Server 1.5

26 июн 12, 00:30    [12773839]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
MasterZiv
Ну правильно, но он не использовал хинт потому что НЕ МОГ

условно:
select * from v where id=1 - хинт работает
select * from v where id=2 - хинт не работает
во втором случае не работает, потому что НЕ МОЖЕТ?
зы. похоже кто-то кого-то не понимает ))) или все всех не понимают )))
зы. dbcc checkdb и прочая сопутствующая лабуда тогда ошибок не показывали - 146%.
26 июн 12, 00:38    [12773853]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
директивный характер
Guest
Сергей Васкецов
директивный характер
А есть такие СУБД в которых хинт в принципе может сработать, но оптимизатор его не использует, т.к. считает что без него лучше?

Буквально так. Имел несколько лет назад неприятные грабли с ASE 12.x.y (не помню версию к сожалению).
Сервер давал по морде варнингами исключительно в некоторых случаях для одного и того же запроса (получение состава документа по его id). Для одних документов проблем не было. Для других получал warning и игнорирование хинта. Если очень надо - могу даже по истории доработок попробовать найти номер "ошибки", которая прилетала. В релиз не ушло по причине отказа от Abstract Plan в первоначальной форме. Было ли это косяком конкретного билда ASE - сказать не возьмусь.

Да, если можно чуть поподробней, номер ошибки и какой хинт?

Насколько я знаю MS SQL и Sybase из одного теста и в первой хинт всегда директивный, т.е. если в принципе может использоваться, то обязательно используется.
26 июн 12, 00:54    [12773897]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
директивный характер
Да, если можно чуть поподробней, номер ошибки и какой хинт?

Ок. Поищу по VSS как доберусь.

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

Хинт вида "(1)" в принципе может использоваться всегда. Тем не менее, каждый может сам потренироваться на своих табличках и вьюхах.
26 июн 12, 01:02    [12773920]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
Итак поискал. Ошибка была 307. Index '%.*s' specified as optimizer hint in the FROM clause of table '%.*s' does not exist. Optimizer will choose another index instead. Тот факт, что при одном и том же запросе при одном и том же плане в plan clause (меняется только id поверх вьюхи) для разных документов либо есть эта ошибка, либо её нет, говорит о том, что сервер способен игнорировать это указание (если бы он его не игнорировал а упорно старался всё сделать как приказано - возвращалась бы ошибка).
27 июн 12, 13:56    [12782620]     Ответить | Цитировать Сообщить модератору
 Re: В каких СУБД хинты носят чисто директивный характер?  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
Правда есть и другой пример. Вьюха на пару десятков таблиц.

Запрос вида
select v.* from v_alldocs v
where
  v.sclad = '1' and v.partner='1'
  --v.id_subsystem=1
plan " ( nl_g_join
( i_scan sclad_code ( table sclad ( in ( view  v ) ) ) )
( i_scan pk_sclad ( table sclad ( in ( view  v ) ) ) ) 
( i_scan partner_code ( table ( p partners ) ( in ( view  v ) ) ) ) 
( i_scan pk_partners ( table ( p partners ) ( in ( view  v ) ) ) ) 
( i_scan relation_3035_fk ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan relation_514_fk ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan docs_zmove_idx ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan marker2docs_fk ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan relation_545_fk ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan relation_583_fk ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan docs_uniq ( table ( d docs ) ( in ( view  v ) ) ) ) 
( i_scan pk_modul ( table modul ( in ( view  v ) ) ) ) 
( i_scan pk_marker ( table marker ( in ( view  v ) ) ) ) 
( i_scan pk_typedoc ( table ( td typedoc ) ( in ( view  v ) ) ) ) 
( i_scan pk_soper ( table ( so soper ) ( in ( view  v ) ) ) )
 ) " 
go

работает, а если изменить условие where на закомментированное - не работает с ошибкой 325.
27 июн 12, 14:01    [12782669]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить