Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / fb3 plan / 21 сообщений из 21, страница 1 из 1
01.02.2017, 10:58
    #39396123
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Добрый день!

А в тройке план при вызове процедуры должен быть такой:
Код: sql
1.
2.
Select Expression
    -> Procedure "FIAS$SEARCH_ADDRESS" Scan



?

В 2.5 было так:
Код: sql
1.
2.
3.
PLAN (FIAS$SEARCH_PREPARE NATURAL)(RDB$DATABASE NATURAL)
PLAN (SP INDEX (FIAS$SEARCH_PREPARE$IDX_RCODE, FIAS$SEARCH_PREPARE$IDX_NS_PAIR))JOIN (SW INDEX (FIAS$WORDS$UC_WORD), SL INDEX (FIAS$WORDS_FIAS$LINKS), A INDEX (FIAS$ADDRESSES$PK))(F$GET_TRIGRAMS NATURAL)(RDB$DATABASE NATURAL)
PLAN (SP INDEX (FIAS$SEARCH_PREPARE$IDX_RCODE, FIAS$SEARCH_PREPARE$IDX_NS_PAIR))JOIN (JOIN (SORT (JOIN (JOIN (F$GET_TRIGRAMS NATURAL, T T INDEX (FIAS$TRIGRAMS$UC_TRIGRAM)), T TL INDEX (FIAS$TRIGRAMS_FIAS$TRG_LINKS))), JOIN (SW INDEX (FIAS$WORDS$PK), SL INDEX (FIAS$WORDS_FIAS$LINKS))), A INDEX (FIAS$ADDRESSES$PK))(F$LIST_TO_ROWS NATURAL)(A FIAS$SEARCH_PREPARE NATURAL)JOIN (SORT (JOIN (A T2 NATURAL, A T1 INDEX (FIAS$SEARCH_PREPARE$IDX_NS_PAIR, FIAS$SEARCH_PREPARE$IDX_RCODE))), FIAS$GET_FULL_ADDRESS NATURAL)
...
Рейтинг: 0 / 0
01.02.2017, 11:18
    #39396143
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
да, тройка больше не показывает кучу планов из внутренностей процедуры
...
Рейтинг: 0 / 0
01.02.2017, 11:23
    #39396148
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
dimitrда, тройка больше не показывает кучу планов из внутренностей процедуры

А как посмотреть план процедуры?
...
Рейтинг: 0 / 0
01.02.2017, 11:33
    #39396157
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
__Avenger__, м.б. в IBExpert дважды щелкнуть на процедуру в представлении дерева БД и зайти на вкладку "Анализ плана"?
...
Рейтинг: 0 / 0
01.02.2017, 11:39
    #39396166
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
__Avenger__,

а нету у процедуры плана. планы есть у запросов внутри процедуры.
...
Рейтинг: 0 / 0
01.02.2017, 11:59
    #39396192
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
kdv__Avenger__,

а нету у процедуры плана. планы есть у запросов внутри процедуры.

Ну что я могу сказать, очень не удобно.
...
Рейтинг: 0 / 0
01.02.2017, 12:17
    #39396215
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
__Avenger__,

почему план, выводимый для процедуры, это криво:

1. при выполнении процедуры в ее отношении используется plan (proc natural). Внутренние планы никогда не учитывались.
2. внутренних планов может быть много, они иногда не влезали в 64к
3. невозможно понять, к какому запросу (или подзапросу!) внутри процедуры относится какая часть плана
4. показывались все планы всех запросов процедуры. А при условном выполнении запросов запросы выполняются не всегда.
5. в сумме планы процедуры не имеют никакого смысла, т.к. они никогда не объединяются.

наверняка я забыл еще про пару дополнительных моментов.
...
Рейтинг: 0 / 0
01.02.2017, 12:21
    #39396219
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
kdv__Avenger__,

почему план, выводимый для процедуры, это криво:

1. при выполнении процедуры в ее отношении используется plan (proc natural). Внутренние планы никогда не учитывались.
2. внутренних планов может быть много, они иногда не влезали в 64к
3. невозможно понять, к какому запросу (или подзапросу!) внутри процедуры относится какая часть плана
4. показывались все планы всех запросов процедуры. А при условном выполнении запросов запросы выполняются не всегда.
5. в сумме планы процедуры не имеют никакого смысла, т.к. они никогда не объединяются.

наверняка я забыл еще про пару дополнительных моментов.

Но тем не менее, другие субд планами для процедур не брезгуют.
...
Рейтинг: 0 / 0
01.02.2017, 12:24
    #39396222
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
__Avenger__другие субд планами для процедур не брезгуют.

Например?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.02.2017, 12:25
    #39396224
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Dimitry Sibiryakov__Avenger__другие субд планами для процедур не брезгуют.

Например?..


MSSQL
...
Рейтинг: 0 / 0
01.02.2017, 12:44
    #39396250
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
__Avenger__MSSQLВ нём нет понятия плана процедуры. Он показывает планы отдельных запросов в батче.
...
Рейтинг: 0 / 0
01.02.2017, 15:16
    #39396426
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
С планами вообще полная муть. Оптимизатору пофиг на все вложенные JOIN, указанные в плане - плевать он хотел на то, в каком порядке ему указывают делать соединения. Можно просто через запятую перечислить все <basic-join> с правильными индексами и оптимизатор сам решает, в какой последовательности соединять.

Простой пример:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
--= Запрос =--
SELECT ev."full_name" || '::' || es."name"
  FROM "rack_sig" rs
    INNER JOIN "eqpmnt_sig" es ON es."id" = rs."eqpsig_id"
    INNER JOIN "eqpmnt__vw" ev ON ev."id" = es."eqpmnt_id"
  WHERE rs."rack_id" = :rackId
    AND rs."type_id" = :sigTypeId
    AND rs."site" = :"sig_site"

--= план предложенный "оптимизатором" :))) =--
PLAN
  MERGE (
    SORT (RS INDEX (rack_sig__uq)),
    SORT (
      JOIN (
        JOIN (
          JOIN (
            JOIN (
              EV E NATURAL,
              EV ET INDEX (eqpmnt_types__pk)),
            EV EC INDEX (eqpmnt_ctrllr__pk)),
          EV C INDEX (controllers__pk)),
        ES INDEX (eqpmnt_sig__fk__eqpmnt))))

--= план заданный вручную =--
PLAN (
  rs INDEX ("rack_sig__uq", "rack_sig__fk__eqpmnt_sig"),
  es INDEX ("eqpmnt_sig__pk", "eqpmnt_sig__fk__eqpmnt"),
  ev e INDEX ("eqpmnt__fk__eqpmnt_types"),
  ev ec INDEX ("eqpmnt_ctrllr__fk__eqpmnt"),
  ev c INDEX ("controllers__pk"),
  ev et NATURAL)

--= план, построенный по заданному вручную =--
PLAN
  JOIN (
    JOIN (
      JOIN (
        JOIN (
          JOIN (
            EV ET NATURAL,
            EV E INDEX (eqpmnt__fk__eqpmnt_types)),
          EV EC INDEX (eqpmnt_ctrllr__fk__eqpmnt)),
        EV C INDEX (controllers__pk)),
      ES INDEX (eqpmnt_sig__fk__eqpmnt)),
    RS INDEX (rack_sig__uq, rack_sig__fk__eqpmnt_sig))

Мрак...
Нафига что-то расписывать в инструкции по планам, если оптимизатор, по большому счету, на всё это клал?
...
Рейтинг: 0 / 0
01.02.2017, 15:25
    #39396433
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
rdb_dev
Код: plsql
1.
2.
3.
4.
5.
6.
7.
PLAN (
  rs INDEX ("rack_sig__uq", "rack_sig__fk__eqpmnt_sig"),
  es INDEX ("eqpmnt_sig__pk", "eqpmnt_sig__fk__eqpmnt"),
  ev e INDEX ("eqpmnt__fk__eqpmnt_types"),
  ev ec INDEX ("eqpmnt_ctrllr__fk__eqpmnt"),
  ev c INDEX ("controllers__pk"),
  ev et NATURAL)

полная хрень.

зы: йад в аптеке.
...
Рейтинг: 0 / 0
01.02.2017, 15:26
    #39396434
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
rdb_dev,

когда я гляжу на запросы в которых постоянно маячат " мне плакать хочется. Когда к ним ещё и планы придумывают вообще рыдать.

С чего ты решил что твой план правильный и вообще работоспособный? Почему если ты задаёшь кривой план сервер должен его принять?

ИХМО на планы лучше влиять с помощью +0 или ||''

Рекомендую поизучать планы через explain plan в 3.0, немного понятнее станет почему сервер выбирает конкретный план.
...
Рейтинг: 0 / 0
01.02.2017, 15:42
    #39396442
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Мимопроходящийполная хрень.По этой "хрени" ФБ построил план отличный от предложенного по запросу без плана и выполнил запрос.
...
Рейтинг: 0 / 0
01.02.2017, 15:50
    #39396453
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Симонов Денискогда я гляжу на запросы в которых постоянно маячат " мне плакать хочется. Когда к ним ещё и планы придумывают вообще рыдать.Почему тебя так раздражает квотирование? Меня, к примеру, раздражает название таблиц и полей в верхнем регистре, но я же молчу.

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

Симонов ДенисИХМО на планы лучше влиять с помощью +0 или ||''Почему именно +0 или || '', а не Cast(.. AS ...) ?

Симонов ДенисРекомендую поизучать планы через explain plan в 3.0, немного понятнее станет почему сервер выбирает конкретный план.Спасибо, конечно, за рекомендацию, но эксплейнить планы буду, видимо, уже на "четвёрке".
...
Рейтинг: 0 / 0
01.02.2017, 16:29
    #39396502
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Di_LIne, еще как жрёт! Даже в "несъедобном" виде.
...
Рейтинг: 0 / 0
01.02.2017, 16:33
    #39396508
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
rdb_devПочему тебя так раздражает квотирование?

потому что запрос выглядит по ублюдски и его тяжело читать.

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

это оно в системных таблицах в верхнем регистре. В запросах тебе никто не мешает писать в каком угодно регистре.

rdb_devПравильно я задал план или нет, это уже другой вопрос...

нет не другой. Я по моему уже говорил что FB ещё в версии 2.0 отучили воспринимать частичные планы. А не верные он отвергал всегда.
...
Рейтинг: 0 / 0
01.02.2017, 17:37
    #39396580
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Симонов ДенисВ запросах тебе никто не мешает писать в каком угодно регистре.

Так ведь это мышкой не получится, придётся пальцами по клавишам тыкать... Сотрутся до
самой задницы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.02.2017, 23:55
    #39396834
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Симонов Денисrdb_devПочему тебя так раздражает квотирование?
потому что запрос выглядит по ублюдски и его тяжело читать.Дело привычки. Мне очень даже комфортно и читать и писать с квотированием.

rdb_devПравильно я задал план или нет, это уже другой вопрос...нет не другой. Я по моему уже говорил что FB ещё в версии 2.0 отучили воспринимать частичные планы. А не верные он отвергал всегда.[/quot]А "неверные", это какие?
...
Рейтинг: 0 / 0
02.02.2017, 09:07
    #39396943
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fb3 plan
Dimitry Sibiryakov, не пользуюсь case средствами при создании объектов БД. Лишь для небольшой коррекции, т.к. для небольшой правки лень писать ALTER. :)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / fb3 plan / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]