Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Длительный commit  [new]
hvlad
Member

Откуда:
Сообщений: 10961
MMF
не знаю, как в IBE включить статистику Commit
Выполнить оператор COMMIT, как обычно (не галкой) и посмотреть на вкладку с perf analysis
3 июн 20, 16:00    [22145042]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
MMF
Member

Откуда:
Сообщений: 96
hvlad,

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

3 июн 20, 16:13    [22145059]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
MMF,

а на нормальной БД?
3 июн 20, 16:21    [22145073]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
MMF
Member

Откуда:
Сообщений: 96
Симонов Денис,
на "нормальной"

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
3 июн 20, 16:28    [22145079]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
hvlad
Member

Откуда:
Сообщений: 10961
MMF,

коррелляцию между Execute и Writes видишь ?
3 июн 20, 16:36    [22145088]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
MMF
Member

Откуда:
Сообщений: 96
hvlad,
вижу, но ведь кол-во вставляемых записей одинаково... Почему writes разное?
3 июн 20, 16:41    [22145092]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
hvlad
Member

Откуда:
Сообщений: 10961
MMF,

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

У них либо сильно разное распределение по ключам индексов.
Либо в одной БД есть свободные места на случайных страницах с данными,
а в другой - нет и там новые записи ложатся плотнее, занимая меньше страниц
В одной БД они меняют в 3 раза меньше страниц, чем в другой.
3 июн 20, 16:47    [22145098]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
MMF
Member

Откуда:
Сообщений: 96
hvlad,

Записи разные, одинаково только кол-во, поскольку завязаны на содержимое таблицы-мастера.
Обе базы после рестора, т.е. свободных случайных страниц нет. Выходит, разница в 4 раза обусловлена индексом внешнего ключа (остальные три дезактивированы, статистика COMMIT приведена для отключенных индексов). Как-то неожиданно

Сообщение было отредактировано: 3 июн 20, 17:06
3 июн 20, 17:08    [22145115]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
hvlad
Member

Откуда:
Сообщений: 10961
MMF
Выходит, разница в 4 раза обусловлена индексом внешнего ключа
Вполне может быть: если в "быстрой" БД все ключи идут, например в конец индекса, а в медленной - распределены по сущ. страницам.
Можно сравнить статистику этого индекса до и после заливки записей.
Если в быстром варианте будет больше новых страниц - это оно и есть.

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

MMF
Как-то неожиданно
Неожиданно другое - запись несчастных 100 страниц за 1 сек.
Чё-то долго, даже для random IO, даже для HDD (хотя...)
3 июн 20, 17:18    [22145123]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
MMF
Member

Откуда:
Сообщений: 96
Благодарю за помощь
3 июн 20, 18:01    [22145165]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 571
Возможно у автора какой-то новый способ спровоцировать длительный коммит. Какая-та скупая информация о том, как он это делает.

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

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

автор
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 уже исправили. Ан нет.

+ Код теста

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

5 июн 20, 07:49    [22146104]     Ответить | Цитировать Сообщить модератору
 Re: Длительный commit  [new]
hvlad
Member

Откуда:
Сообщений: 10961
Коваленко Дмитрий,

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

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

PS тикет в трекере есть ?
5 июн 20, 10:18    [22146195]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Firebird, InterBase Ответить