powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Длительный commit
12 сообщений из 37, страница 2 из 2
Длительный commit
    #39965771
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMF
не знаю, как в IBE включить статистику Commit
Выполнить оператор COMMIT, как обычно (не галкой) и посмотреть на вкладку с perf analysis
...
Рейтинг: 0 / 0
Длительный commit
    #39965782
MMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,
Код: 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.
Query
------------------------------------------------
commit;

Plan
------------------------------------------------


Query Time
------------------------------------------------
Prepare       : 0,00 ms
Execute       : 4 500,00 ms
Avg fetch time: 0,00 ms

Memory
------------------------------------------------
Current: 84 022 264
Max    : 84 140 800
Buffers: 5 000

Operations
------------------------------------------------
Read   : 0
Writes : 433
Fetches: 1
Marks  : 1

...
Рейтинг: 0 / 0
Длительный commit
    #39965789
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMF,

а на нормальной БД?
...
Рейтинг: 0 / 0
Длительный commit
    #39965793
MMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
на "нормальной"
Код: 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.
Query
------------------------------------------------
commit;

Plan
------------------------------------------------


Query Time
------------------------------------------------
Prepare       : 0,00 ms
Execute       : 1 094,00 ms
Avg fetch time: 0,00 ms

Memory
------------------------------------------------
Current: 84 012 384
Max    : 84 130 040
Buffers: 5 000

Operations
------------------------------------------------
Read   : 0
Writes : 115
Fetches: 1
Marks  : 1
...
Рейтинг: 0 / 0
Длительный commit
    #39965798
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMF,

коррелляцию между Execute и Writes видишь ?
...
Рейтинг: 0 / 0
Длительный commit
    #39965801
MMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,
вижу, но ведь кол-во вставляемых записей одинаково... Почему writes разное?
...
Рейтинг: 0 / 0
Длительный commit
    #39965804
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMF,

а записи в обеих БД одни и те же вставляются ?

У них либо сильно разное распределение по ключам индексов.
Либо в одной БД есть свободные места на случайных страницах с данными,
а в другой - нет и там новые записи ложатся плотнее, занимая меньше страниц
В одной БД они меняют в 3 раза меньше страниц, чем в другой.
...
Рейтинг: 0 / 0
Длительный commit
    #39965811
MMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Записи разные, одинаково только кол-во, поскольку завязаны на содержимое таблицы-мастера.
Обе базы после рестора, т.е. свободных случайных страниц нет. Выходит, разница в 4 раза обусловлена индексом внешнего ключа (остальные три дезактивированы, статистика COMMIT приведена для отключенных индексов). Как-то неожиданно
...
Рейтинг: 0 / 0
Длительный commit
    #39965817
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMF
Выходит, разница в 4 раза обусловлена индексом внешнего ключа
Вполне может быть: если в "быстрой" БД все ключи идут, например в конец индекса, а в медленной - распределены по сущ. страницам.
Можно сравнить статистику этого индекса до и после заливки записей.
Если в быстром варианте будет больше новых страниц - это оно и есть.

По твоим картинкам в 22144740 - заполнение страниц индекса FK_PERF_COUNTERS_DATA_COUNTER в "быстрой" БД ближе к 80%, а в медленной - ближе к 50%

MMF
Как-то неожиданно
Неожиданно другое - запись несчастных 100 страниц за 1 сек.
Чё-то долго, даже для random IO, даже для HDD (хотя...)
...
Рейтинг: 0 / 0
Длительный commit
    #39965842
MMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю за помощь
...
Рейтинг: 0 / 0
Длительный commit
    #39966345
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно у автора какой-то новый способ спровоцировать длительный коммит. Какая-та скупая информация о том, как он это делает.

Есть более простой и понятный способ получить тоже самое.

По аналогии вот с этим

автор05.06.2020 7:18:48 - DBMS : WI-V3.0.6.33294 Firebird 3.0
05.06.2020 7:18:48 - Client : Firebird 3.0.6.33294
05.06.2020 7:18:48 - START
05.06.2020 7:19:02 - 10000
05.06.2020 7:19:20 - 20000
05.06.2020 7:19:38 - 30000
05.06.2020 7:19:56 - 40000
05.06.2020 7:20:16 - 50000
05.06.2020 7:20:16 - STOP
05.06.2020 7:20:16 - COMMIT [relax and wait]
05.06.2020 7:30:54 - FINISH

10 минут.

Я почему-то был уверен, что это в FB3 уже исправили. Ан нет.

Код теста
Код: vbnet
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.
48.
49.
50.
51.
52.
53.
54.
option explicit

dim cn

set cn=createobject("ADODB.Connection")

cn.Provider="LCPI.IBProvider.5"

cn.Properties("location").value="localhost:d:\database\ram\ibp_test_fb30_d3.gdb"
cn.Properties("user id").value="GAMER"
cn.Properties("password").value="vermut"
cn.Properties("dbclient_library").value="fbclient_30.dll"

call cn.Open()

wscript.echo now()&" - DBMS   : "&cn.Properties("IB Base")
wscript.echo now()&" - Client : "&cn.Properties("IB Client Name")&" "&cn.Properties("IB Client Version")

call cn.BeginTrans()

dim cmd, rs
set cmd=createobject("ADODB.Command")

set cmd.ActiveConnection=cn

cmd.CommandText="select ID from DUAL"

dim n

n=0

wscript.echo now()&" - START"

while(n<50000)
 n=n+1 

 if((n mod 10000)=0)then
  wscript.echo now()&" - "&n
 end if

 set rs=cmd.Execute()

 call rs.Close()
 
 set rs=nothing
wend

wscript.echo now()&" - STOP "

wscript.echo now()&" - COMMIT [relax and wait]"

call cn.CommitTrans()

wscript.echo now()&" - FINISH"



То же самое, но через другого клиента
Я не стал разгружать машину для чистоты эксперимента.

автор05.06.2020 7:43:18 - DBMS : WI-V3.0.6.33294 Firebird 3.0
05.06.2020 7:43:18 - Client : LCPI.IBProvider.RemoteFB 5.18.0.35340
05.06.2020 7:43:18 - START
05.06.2020 7:43:35 - 10000
05.06.2020 7:43:54 - 20000
05.06.2020 7:44:12 - 30000
05.06.2020 7:44:30 - 40000
05.06.2020 7:44:49 - 50000
05.06.2020 7:44:49 - STOP
05.06.2020 7:44:49 - COMMIT [relax and wait]
05.06.2020 7:44:49 - FINISH
...
Рейтинг: 0 / 0
Длительный commit
    #39966398
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий,

Никто будучи в своём уме, не запускает 100500 селективных запросов на выполнение в одной тр-ции и ничего с ними потом не делает.
Реакцию на этот бред, конечно, можно исправить, но кому это реально нужно ?

Да и чем тогда ты будешь так гордиться ? :)

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


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