powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
10 сообщений из 10, страница 1 из 1
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549451
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... например - созданием "на лету" индексов к ним ?

Например, вот для такого случая:
Код: plaintext
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.
SQL> show view v_cross_m;
TID_A                           INTEGER Expression
VN_A                            VARCHAR(80) Expression
ID_A                            INTEGER Expression
F1_A                            INTEGER Expression
F2_A                            INTEGER Expression
TID_B                           INTEGER Expression
VN_B                            VARCHAR(80) Expression
ID_B                            INTEGER Expression
F1_B                            INTEGER Expression
F2_B                            INTEGER Expression
View Source:
==== ======

    with c as(
        select
            c.mon$transaction_id tid
            ,substring(c.mon$variable_name from 3) vn
            ,min(cast( iif( c.mon$variable_name starting with 'ID_NEW', c.mon$variable_value, null) as int) ) ctx_id_new
            ,min(cast( iif( c.mon$variable_name starting with 'F1_NEW', c.mon$variable_value, null) as int) ) ctx_f1_new
            ,min(cast( iif( c.mon$variable_name starting with 'F2_NEW', c.mon$variable_value, null) as int) ) ctx_f2_new
        from mon$context_variables c
        group by 1,2
    )
    select
     ca.tid tid_a, ca.vn vn_a, ca.ctx_id_new id_a, ca.ctx_f1_new f1_a, ca.ctx_f2_new f2_a
    ,cb.tid tid_b, cb.vn vn_b, cb.ctx_id_new id_b, cb.ctx_f1_new f1_b, cb.ctx_f2_new f2_b
    from c ca join c cb
        on ca.ctx_id_new<>cb.ctx_id_new
            and sign(ca.ctx_f1_new - cb.ctx_f2_new) * sign(cb.ctx_f1_new - ca.ctx_f2_new)>0


SQL> select count(*) from mon$context_variables;

       COUNT
============
        1800

SQL> set stat on;
SQL> set plan on; select count(*) from v_cross_m;

- получаю план:
в 2.5:
Код: plaintext
PLAN JOIN (SORT (MON$CONTEXT_VARIABLES NATURAL), SORT (MON$CONTEXT_VARIABLES NATURAL))
в 3.0:
Код: plaintext
PLAN JOIN (SORT (V_CROSS_M CA C NATURAL), SORT (V_CROSS_M CB C NATURAL))

и совсем неувидительно, что при этом будет печальный elapsed time:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Current memory = 1379592
Delta memory = 204840
Max memory = 3089480
Elapsed time= 113.56 sec
Buffers = 75
Reads = 12
Writes 0
Fetches = 205

PS. Хотя сама группировка делается быстро:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> select
CON>     c.mon$transaction_id tid
CON>     ,substring(c.mon$variable_name from 3) vn
CON>     ,min(cast( iif( c.mon$variable_name starting with 'ID_NEW', c.mon$variable_value, null) as int) ) ctx_id_new
CON>     ,min(cast( iif( c.mon$variable_name starting with 'F1_NEW', c.mon$variable_value, null) as int) ) ctx_f1_new
CON>     ,min(cast( iif( c.mon$variable_name starting with 'F2_NEW', c.mon$variable_value, null) as int) ) ctx_f2_new
CON> from mon$context_variables c
CON> group by 1,2;
Current memory = 1399376
Delta memory = 19704
Max memory = 3089480
 Elapsed time= 0.36 sec 
Buffers = 75
Reads = 0
Writes 0
Fetches = 0

PPS. Статистика приведена для 2.5.
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549452
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создание индексов для таблиц-мониторинга, да ещё на лету - это эпично.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549455
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ты думаешь создание индекса на лету будет быстрее? Ускорять соединение можно было бы HASH/MERGE соединением, но не в твоём случае. Это вообще что за изврат?
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549458
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> ты думаешь создание индекса на лету будет быстрее?

Теоретически (не в данном случае), можно было бы его создавать заранее.
Хотя для таблиц мониторинга с этим могут быть трудности да и не нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549460
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще эпичнее использование индексов для джойна по условию ca.ctx_id_new<>cb.ctx_id_new, особенно для выражений а-ля "min(cast(iif(хрен пойми что)))"
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549465
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чё, индекс по выражению. Ну "хрен пойми что" можно
заменить на что-то более вменяемое. Сугубо для трекера. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549466
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисты думаешь создание индекса на лету будет быстрее? Ускорять соединение можно было бы HASH/MERGE соединением, но не в твоём случае. Это вообще что за изврат?Для 1800 строк-то (см выше) ? да мухой должно пролететь, ведь ничего/никого уже опрашивать не надо, данные все - под рукой.
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549468
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

индекс по выражению для агрегатных функций
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549473
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

гулять так гулять мечтать так мечтать :-)
...
Рейтинг: 0 / 0
Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
    #38549482
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насыпьте туда ещё сверху индекс по подзапросу. Для полного щастья.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Соединение derived-выборок mon$-таблиц: можно ли ускорить ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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