powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странная работа с индексами в FB2.5
8 сообщений из 8, страница 1 из 1
Странная работа с индексами в FB2.5
    #39837554
maloletov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся со странной работой с индексами. Поправьте пожалуйста, что я делаю не так.
Есть таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE T_CUSTOMER_CONFIRM_ITER1 (
    ID         D_ID /* D_ID = BIGINT NOT NULL */,
    D_ADD      D_DT /* D_DT = TIMESTAMP DEFAULT CURRENT_TIMESTAMP */,
    ROW_ID     D_CH21 /* D_CH21 = VARCHAR(21) */,
    ITER_ID    D_CH21 /* D_CH21 = VARCHAR(21) */,
    STATE      D_CH20 /* D_CH20 = VARCHAR(21) */,
    NOTE       D_CH1024 /* D_CH1024 = VARCHAR(1024) */,
    SR_NUMBER  D_CH21 /* D_CH21 = VARCHAR(21) */
);
ALTER TABLE T_CUSTOMER_CONFIRM_ITER1 ADD CONSTRAINT PK_T_CUSTOMER_CONFIRM_ITER1 PRIMARY KEY (ID);
CREATE INDEX T_CUSTOMER_CONFIRM_ITER1_IDX1 ON T_CUSTOMER_CONFIRM_ITER1 (ITER_ID);
CREATE INDEX T_CUSTOMER_CONFIRM_ITER1_IDX2 ON T_CUSTOMER_CONFIRM_ITER1 (STATE);



В таблице примерно 170 тыс. записей.
1. Выполняю запрос типа
Код: sql
1.
select * from T_CUSTOMER_CONFIRM_ITER1 where state='Назначено'


Получаю вот такой план PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))
и статистку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
------ Информация о производительности ------
Время подготовки запроса = 297ms
Время выполнения запроса = 31ms
Current memory = 245 924 200
Max memory = 344 115 728
Memory buffers = 2 048
Reads from disk to cache = 59
Writes from cache to disk = 24
Чтений из кэша = 0



2. Выполняю запрос типа
Код: sql
1.
select * from T_CUSTOMER_CONFIRM_ITER1 where state='В процессе'


Получаю вот такой план PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))
и статистку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Время подготовки запроса = 187ms
Время выполнения запроса = 27s 722ms
Current memory = 246 139 168
Max memory = 344 115 728
Memory buffers = 2 048
Reads from disk to cache = 13 287
Writes from cache to disk = 5 076

+--------------------------+-----------+-----------+-------------+---------+---------+---------+
|        Table Name        |  Records  |  Indexed  | Non-Indexed | Updates | Deletes | Inserts |
|                          |   Total   |   reads   |    reads    |         |         |         |
+--------------------------+-----------+-----------+-------------+---------+---------+---------+
|  T_CUSTOMER_CONFIRM_ITER1|         0 |     58841 |           0 |       0 |       0 |       0 |
+--------------------------+-----------+-----------+-------------+---------+---------+---------+



3. Но если выполнить запрос типа
Код: sql
1.
select * from T_CUSTOMER_CONFIRM_ITER1 where state starting with 'В процессе%'


Получаю вот такой план PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))
и статистку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
------ Информация о производительности ------
Время подготовки запроса = 125ms
Время выполнения запроса = 0ms
Current memory = 245 785 008
Max memory = 344 115 728
Memory buffers = 2 048
Reads from disk to cache = 173
Writes from cache to disk = 52
Чтений из кэша = 0



Вопрос, почему в вариантах 2 и 3 такая разница в скорости и почему вариант 2 так долго выполняется?
...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837564
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно, варианту 2 не повезло наткнуться на кучу мусора и собрать его.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837696
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maloletov,

1. В статистике выполнения не видно самого главного параметра Fetches from cache = xxxxx
...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837701
maloletov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastor, во всех трех вариантах Чтений из кэша = 0.
Dimitry Sibiryakov, спасибо. Соберу мусор на базе, посмотрю на результат.
...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837784
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maloletov,

так не бывает. если кто-то где-то сделал 58 000 индексных чтения

Prepare time = 0ms
Execute time = 31ms
Current memory = 35 799 184
Max memory = 36 882 952
Memory buffers = 2 048
Reads from disk to cache = 28
Writes from cache to disk = 2
Fetches from cache = 28 113
...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837863
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorтак не бывает. если кто-то где-то сделал 58 000 индексных чтения

Так бывает если кто-то использует IBExpert с багом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837864
maloletov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastor, вот отчет из IBExpert
Код: sql
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.
47.
Query
------------------------------------------------
select * from T_CUSTOMER_CONFIRM_ITER1 where state='В процессе'

Plan
------------------------------------------------
PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))

Query Time
------------------------------------------------
Prepare       : 93,00 ms
Execute       : 39 422,00 ms
Avg fetch time: 0,00 ms

Memory
------------------------------------------------
Current: 240 619 848
Max    : 345 260 560
Buffers: 2 048

Operations
------------------------------------------------
Read   : 26 228
Writes : 5 408
Fetches: 0


Enchanced Info:
+--------------------------+-----------+-----------+-------------+---------+---------+---------+
|        Table Name        |  Records  |  Indexed  | Non-Indexed | Updates | Deletes | Inserts |
|                          |   Total   |   reads   |    reads    |         |         |         |
+--------------------------+-----------+-----------+-------------+---------+---------+---------+
|  T_CUSTOMER_CONFIRM_ITER1|         0 |     78687 |           0 |       0 |       0 |       0 |
+--------------------------+-----------+-----------+-------------+---------+---------+---------+

План
PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))

------ Информация о производительности ------
Время подготовки запроса = 125ms
Время выполнения запроса = 33s 57ms
Current memory = 240 865 592
Max memory = 345 260 560
Memory buffers = 2 048
Reads from disk to cache = 66 192
Writes from cache to disk = 4 688
Чтений из кэша = 0

...
Рейтинг: 0 / 0
Странная работа с индексами в FB2.5
    #39837881
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maloletovpastor, вот отчет из IBExpert
Код: sql
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.
47.
Query
------------------------------------------------
select * from T_CUSTOMER_CONFIRM_ITER1 where state='В процессе'

Plan
------------------------------------------------
PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))

Query Time
------------------------------------------------
Prepare       : 93,00 ms
Execute       : 39 422,00 ms
Avg fetch time: 0,00 ms

Memory
------------------------------------------------
Current: 240 619 848
Max    : 345 260 560
Buffers: 2 048

Operations
------------------------------------------------
Read   : 26 228
Writes : 5 408
Fetches: 0


Enchanced Info:
+--------------------------+-----------+-----------+-------------+---------+---------+---------+
|        Table Name        |  Records  |  Indexed  | Non-Indexed | Updates | Deletes | Inserts |
|                          |   Total   |   reads   |    reads    |         |         |         |
+--------------------------+-----------+-----------+-------------+---------+---------+---------+
|  T_CUSTOMER_CONFIRM_ITER1|         0 |     78687 |           0 |       0 |       0 |       0 |
+--------------------------+-----------+-----------+-------------+---------+---------+---------+

План
PLAN (T_CUSTOMER_CONFIRM_ITER1 INDEX (T_CUSTOMER_CONFIRM_ITER1_IDX2))

------ Информация о производительности ------
Время подготовки запроса = 125ms
Время выполнения запроса = 33s 57ms
Current memory = 240 865 592
Max memory = 345 260 560
Memory buffers = 2 048
Reads from disk to cache = 66 192
Writes from cache to disk = 4 688
Чтений из кэша = 0



таки пройдусь шкуркой 60 по хрустальному шару:

если сервер занимался 31 секунду и не сделал ни одного фетча ни из индекса, ни из данных, при этом страницы с диска читал и индексные чтения таки делал - то кто-то врет.

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

потом сравнить полученную цифру с MaxInt и долго думать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странная работа с индексами в FB2.5
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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