powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Упала скорость update при переходе с 2.5 на 3.0
25 сообщений из 34, страница 1 из 2
Упала скорость update при переходе с 2.5 на 3.0
    #39266328
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть расчётная таблица связей между объектами. Выдрал проблемный кусок и воспроизвёл.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE TEST_TABLE (
    VALUE_1  INTEGER,
    VALUE_2  INTEGER,
    VALUE_3  INTEGER
);

CREATE INDEX TEST_TABLE_IDX1 ON TEST_TABLE (VALUE_1);
CREATE INDEX TEST_TABLE_IDX2 ON TEST_TABLE (VALUE_2);
CREATE INDEX TEST_TABLE_IDX3 ON TEST_TABLE (VALUE_3);
CREATE INDEX TEST_TABLE_IDX4 ON TEST_TABLE (VALUE_1, VALUE_2);
CREATE INDEX TEST_TABLE_IDX5 ON TEST_TABLE (VALUE_1, VALUE_3);
CREATE INDEX TEST_TABLE_IDX6 ON TEST_TABLE (VALUE_1, VALUE_2, VALUE_3);



Выполняемый код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
execute block
as
declare variable i integer;
declare variable n integer;
begin
  i = 1;
  n = 50000;
  delete from test_table;
  while (i < n) do
  begin
    insert into TEST_TABLE (VALUE_1, VALUE_2, VALUE_3)
    values (:i, :i, :i);
    i = i + 1;
  end
end


2.5 - 3s 993ms
3.0 - 8s 268ms
Немного деталей2.5

Plan
PLAN (TEST_TABLE NATURAL)

49999 record(s) was(were) deleted from TEST_TABLE

49999 record(s) was(were) inserted into TEST_TABLE

------ Performance info ------
Prepare time = 0ms
Execute time = 3s 993ms
Current memory = 167 045 760
Max memory = 167 156 896
Memory buffers = 9 999
Reads from disk to cache = 0
Writes from cache to disk = 321
Fetches from cache = 2 374 700


3.0

Plan
PLAN (TEST_TABLE NATURAL)

49999 record(s) was(were) deleted from TEST_TABLE

49999 record(s) was(were) inserted into TEST_TABLE

------ Performance info ------
Prepare time = 0ms
Execute time = 8s 268ms
Current memory = 171 632 040
Max memory = 171 953 816
Memory buffers = 9 999
Reads from disk to cache = 0
Writes from cache to disk = 739
Fetches from cache = 2 454 350

Конфигурация одинаковая. Страница 16к. Win1251.
Что это может быть?
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266338
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Безотносительно вопроса: ты в курсе, что твои индексы IDX1 и IDX4 чуть менее чем бесполезны?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266354
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
я ждал этого вопроса. Там FK его создал, так что просто данность. IDX4 просто для нагрузки, т.к. это не 100% мой пример, но он воспроизводит поведение. Можно сделать (VALUE_2, VALUE_3);

OFF: А ещё я верю, что однажды в FB будет некий Index Scan и такие индексы обретут смысл :)
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266359
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm2.5
...
Writes from cache to disk = 321
afgm3.0
...
Writes from cache to disk = 739Похоже на расширение файла БД во втором случае, не ?
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266469
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

нет, не оно. Случайно так получилось. Я этой статистикой только запутал.
Я прогоняю тесты несколько раз и на прогретом кеше.
Пересоздал базы, и уже при первичном заполнении большая разница.

Первичное заполнение

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
2.5
------ Performance info ------
Prepare time = 0ms
Execute time = 2s 324ms
Current memory = 167 485 440
Max memory = 167 538 184
Memory buffers = 9 999
Reads from disk to cache = 0
Writes from cache to disk = 480
Fetches from cache = 1 051 906

3.0
------ Performance info ------
Prepare time = 0ms
Execute time = 6s 958ms
Current memory = 172 773 992
Max memory = 172 829 536
Memory buffers = 9 999
Reads from disk to cache = 0
Writes from cache to disk = 480
Fetches from cache = 1 051 585
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266484
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

я попозже погоняю это у себя.
Если есть возможность, выполни тест ещё раз без индексов.

PS 3.0 в таких тестах медленнее на однопоточной нагрузке до 20%, это известно, ну тут что-то уж слишком много...
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266508
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

у меня стабилизируется только на 3-м выполнении блока. И результат 4 и последующих такой:

2.5
------ Performance info ------
Prepare time = 0ms
Execute time = 4s 275ms
Current memory = 34 839 620
Max memory = 34 883 072
Memory buffers = 2 048
Reads from disk to cache = 0
Writes from cache to disk = 181
Fetches from cache = 2 202 798


3.0 - по другому. то есть page writes (467), то нет, в зависимости как долго подождать после коммита блока. А fetches при этом почти одинаковый.
------ Performance info ------
Prepare time = 0ms
Execute time = 10s 733ms
Current memory = 36 249 360
Max memory = 36 289 032
Memory buffers = 2 048
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 1 301 448


так что, да, медленнее, еще и "по другому".
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266527
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

сразу заметил, и если выполнять один за другим, то в 2.5 Expunges вылезает, в 3.0 нет почти. Писать пока не стал, делаю консольный тест, чтобы статистику набрать.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266540
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmесли выполнять один за другим, то в 2.5 Expunges вылезаеExpunges ??? Во время insert'ов ???
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266541
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladafgmесли выполнять один за другим, то в 2.5 Expunges вылезаеExpunges ??? Во время insert'ов ???Отбой, я "delete from test_table" пропустил :)
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266562
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

без индексов из консоли разница не так велика. Из интерфейса ввиду задержек между выполнением, коммитом и новым запуском - есть.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266582
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvмедленнее, еще и "по другому".
Чисто из любопытства: сравни ещё и с четвёркой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266587
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmбез индексов из консоли разница не так велика. Из интерфейса ввиду задержек между выполнением, коммитом и новым запуском - есть.
Наврал. Тест не тот запустил. Опечатка. Перезапускаю.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266631
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результаты тестирования

тестовый код
Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
SHOW DATABASE;

CREATE TABLE TEST_TABLE (
    VALUE_1  INTEGER,
    VALUE_2  INTEGER,
    VALUE_3  INTEGER
);


commit;

/*

CREATE INDEX TEST_TABLE_IDX1 ON TEST_TABLE (VALUE_1);
CREATE INDEX TEST_TABLE_IDX2 ON TEST_TABLE (VALUE_2);
CREATE INDEX TEST_TABLE_IDX3 ON TEST_TABLE (VALUE_3);
CREATE INDEX TEST_TABLE_IDX4 ON TEST_TABLE (VALUE_1, VALUE_2);
CREATE INDEX TEST_TABLE_IDX5 ON TEST_TABLE (VALUE_1, VALUE_3);
CREATE INDEX TEST_TABLE_IDX6 ON TEST_TABLE (VALUE_1, VALUE_2, VALUE_3);
commit;
*/

SET TERM ^ ;

create procedure MAKE_UPDATES
as
declare variable i integer;
declare variable n integer;
begin
  i = 1;
  n = 50000;
  delete from test_table;
  while (i < n) do
  begin
    insert into TEST_TABLE (VALUE_1, VALUE_2, VALUE_3)
    values (:i, :i, :i);
    i = i + 1;
  end
end

^

SET TERM ; ^

commit;

SET TERM ^ ;

create or alter procedure GET_STATISTICS
returns (
    MON$STAT_ID integer,
    MON$STAT_GROUP smallint,
    MON$RECORD_SEQ_READS bigint,
    MON$RECORD_IDX_READS bigint,
    MON$RECORD_INSERTS bigint,
    MON$RECORD_UPDATES bigint,
    MON$RECORD_DELETES bigint,
    MON$RECORD_BACKOUTS bigint,
    MON$RECORD_PURGES bigint,
    MON$RECORD_EXPUNGES bigint,
    MON$RECORD_LOCKS bigint,
    MON$RECORD_WAITS bigint,
    MON$RECORD_CONFLICTS bigint,
    MON$BACKVERSION_READS bigint,
    MON$FRAGMENT_READS bigint,
    MON$RECORD_RPT_READS bigint)
AS
declare variable query_string varchar(1024);
BEGIN
  query_string =
  case substring( rdb$get_context('SYSTEM', 'ENGINE_VERSION') from 1 for 3)
    when '3.0'
        then 'select rs.mon$stat_id, 
               rs.mon$stat_group, 
               rs.mon$record_seq_reads, 
               rs.mon$record_idx_reads, 
               rs.mon$record_inserts, 
               rs.mon$record_updates, 
               rs.mon$record_deletes, 
               rs.mon$record_backouts, 
               rs.mon$record_purges, 
               rs.mon$record_expunges, 
               rs.mon$record_locks, 
               rs.mon$record_waits, 
               rs.mon$record_conflicts, 
               rs.mon$backversion_reads, 
               rs.mon$fragment_reads, 
               rs.mon$record_rpt_reads
                 from mon$record_stats rs, mon$transactions tr
                   where tr.mon$transaction_id = :tran_id
                   and rs.mon$stat_id = tr.mon$stat_id'
        when '2.5'
        then 'select rs.mon$stat_id, 
               rs.mon$stat_group, 
               rs.mon$record_seq_reads, 
               rs.mon$record_idx_reads, 
               rs.mon$record_inserts, 
               rs.mon$record_updates, 
               rs.mon$record_deletes, 
               rs.mon$record_backouts, 
               rs.mon$record_purges, 
               rs.mon$record_expunges,
               null as mon$record_locks,
               null as mon$record_waits,
               null as mon$record_conflicts,
               null as mon$backversion_reads,
               null as mon$fragment_reads,
               null as mon$record_rpt_reads
                 from mon$record_stats rs, mon$transactions tr
                   where tr.mon$transaction_id = :tran_id
                   and rs.mon$stat_id = tr.mon$stat_id'

    else '-- UNSUPPORTED FB ENGINE'
  end;

  FOR
    execute statement (:query_string)(tran_id := current_transaction)
    with autonomous transaction
    INTO :MON$STAT_ID,
         :MON$STAT_GROUP,
         :MON$RECORD_SEQ_READS,
         :MON$RECORD_IDX_READS,
         :MON$RECORD_INSERTS,
         :MON$RECORD_UPDATES,
         :MON$RECORD_DELETES,
         :MON$RECORD_BACKOUTS,
         :MON$RECORD_PURGES,
         :MON$RECORD_EXPUNGES,
         :MON$RECORD_LOCKS,
         :MON$RECORD_WAITS,
         :MON$RECORD_CONFLICTS,
         :MON$BACKVERSION_READS,
         :MON$FRAGMENT_READS,
         :MON$RECORD_RPT_READS
  DO
  BEGIN
    SUSPEND;
  END
END^

SET TERM ; ^

commit;

set stat on;
set list on;
set echo on;


execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;

execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;

execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;

execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;

execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;

execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;

execute procedure MAKE_UPDATES;
select * from GET_STATISTICS;
commit;



Результаты
тройки:
- обновления
- получение статистики
- коммит

Код: 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.
2.5
Elapsed time= 0.21 sec
Elapsed time= 0.00 sec
Elapsed time= 0.06 sec

Elapsed time= 0.29 sec
Elapsed time= 0.01 sec
Elapsed time= 0.09 sec

Elapsed time= 0.28 sec
Elapsed time= 0.00 sec
Elapsed time= 0.08 sec

Elapsed time= 0.27 sec
Elapsed time= 0.00 sec
Elapsed time= 0.13 sec

Elapsed time= 0.27 sec
Elapsed time= 0.00 sec
Elapsed time= 0.10 sec

Elapsed time= 0.34 sec
Elapsed time= 0.01 sec
Elapsed time= 0.10 sec

Elapsed time= 0.26 sec
Elapsed time= 0.00 sec
Elapsed time= 0.09 sec

Код: 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.
3.0
Elapsed time= 0.165 sec
Elapsed time= 0.004 sec
Elapsed time= 0.103 sec

Elapsed time= 0.302 sec
Elapsed time= 0.003 sec
Elapsed time= 0.152 sec

Elapsed time= 0.987 sec
Elapsed time= 0.002 sec
Elapsed time= 0.125 sec

Elapsed time= 0.598 sec
Elapsed time= 0.003 sec
Elapsed time= 0.090 sec

Elapsed time= 0.972 sec
Elapsed time= 0.003 sec
Elapsed time= 0.123 sec

Elapsed time= 0.369 sec
Elapsed time= 0.003 sec
Elapsed time= 0.067 sec

Elapsed time= 0.970 sec
Elapsed time= 0.003 sec
Elapsed time= 0.087 sec

2.5 полностью
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
Database: 127.0.0.1/3051:D:\_dbases\speed_test_25.fdb
        Owner: SYSDBA                         
PAGE_SIZE 16384
Number of DB pages allocated = 154
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 4
Transaction - oldest active = 5
Transaction - oldest snapshot = 5
Transaction - Next = 8
ODS = 11.2
Default Character set: WIN1251


execute procedure MAKE_UPDATES;
Current memory = 167407400
Delta memory = 63680
Max memory = 167448376
Elapsed time= 0.21 sec
Buffers = 9999
Reads = 0
Writes 0
Fetches = 151450
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            0
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              0
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167586944
Delta memory = 179544
Max memory = 167768640
Elapsed time= 0.00 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 580
commit;
Current memory = 167544176
Delta memory = -42768
Max memory = 167768640
Elapsed time= 0.06 sec
Buffers = 9999
Reads = 0
Writes 182
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 167552616
Delta memory = 6432
Max memory = 167768640
Elapsed time= 0.29 sec
Buffers = 9999
Reads = 0
Writes 0
Fetches = 401765
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167568240
Delta memory = 15624
Max memory = 167768640
Elapsed time= 0.01 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 8
commit;
Current memory = 167545880
Delta memory = -22360
Max memory = 167768640
Elapsed time= 0.09 sec
Buffers = 9999
Reads = 0
Writes 359
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 167553696
Delta memory = 5304
Max memory = 167768640
Elapsed time= 0.28 sec
Buffers = 9999
Reads = 0
Writes 157
Fetches = 401769
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167569288
Delta memory = 15592
Max memory = 167768640
Elapsed time= 0.00 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 8
commit;
Current memory = 167546928
Delta memory = -22360
Max memory = 167768640
Elapsed time= 0.08 sec
Buffers = 9999
Reads = 0
Writes 359
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 167553672
Delta memory = 5280
Max memory = 167768640
Elapsed time= 0.27 sec
Buffers = 9999
Reads = 0
Writes 54
Fetches = 401767
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167569288
Delta memory = 15616
Max memory = 167768640
Elapsed time= 0.00 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 8
commit;
Current memory = 167546928
Delta memory = -22360
Max memory = 167768640
Elapsed time= 0.13 sec
Buffers = 9999
Reads = 0
Writes 359
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 167553688
Delta memory = 5296
Max memory = 167768640
Elapsed time= 0.27 sec
Buffers = 9999
Reads = 0
Writes 0
Fetches = 401771
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167569288
Delta memory = 15600
Max memory = 167768640
Elapsed time= 0.00 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 8
commit;
Current memory = 167546928
Delta memory = -22360
Max memory = 167768640
Elapsed time= 0.10 sec
Buffers = 9999
Reads = 0
Writes 359
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 167553680
Delta memory = 4464
Max memory = 167768640
Elapsed time= 0.34 sec
Buffers = 9999
Reads = 0
Writes 181
Fetches = 565124
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167569272
Delta memory = 15592
Max memory = 167768640
Elapsed time= 0.01 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 8
commit;
Current memory = 167546928
Delta memory = -22344
Max memory = 167768640
Elapsed time= 0.10 sec
Buffers = 9999
Reads = 0
Writes 359
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 167553672
Delta memory = 5280
Max memory = 167768640
Elapsed time= 0.26 sec
Buffers = 9999
Reads = 0
Writes 0
Fetches = 401773
select * from GET_STATISTICS;

MON$STAT_ID                     5
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                <null>
MON$RECORD_WAITS                <null>
MON$RECORD_CONFLICTS            <null>
MON$BACKVERSION_READS           <null>
MON$FRAGMENT_READS              <null>
MON$RECORD_RPT_READS            <null>


Current memory = 167569288
Delta memory = 15616
Max memory = 167768640
Elapsed time= 0.00 sec
Buffers = 9999
Reads = 0
Writes 2
Fetches = 8
commit;
Current memory = 167546928
Delta memory = -22360
Max memory = 167768640
Elapsed time= 0.09 sec
Buffers = 9999
Reads = 0
Writes 359
Fetches = 2


3.0 полностью
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
Database: 127.0.0.1/3052:D:\_dbases\speed_test_30.fdb
        Owner: SYSDBA                         
PAGE_SIZE 16384
Number of DB pages allocated = 182
Number of DB pages used = 163
Number of DB pages free = 19
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 4
Transaction - oldest active = 5
Transaction - oldest snapshot = 5
Transaction - Next = 8
ODS = 12.0
Database not encrypted
Default Character set: WIN1251


execute procedure MAKE_UPDATES;
Current memory = 173115800
Delta memory = 114264
Max memory = 173165248
Elapsed time= 0.165 sec
Buffers = 9999
Reads = 0
Writes = 3
Fetches = 151129
select * from GET_STATISTICS;

MON$STAT_ID                     44
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            0
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              0
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           0
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173209704
Delta memory = 93904
Max memory = 173491552
Elapsed time= 0.004 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 275
commit;
Current memory = 173121488
Delta memory = -88216
Max memory = 173491552
Elapsed time= 0.103 sec
Buffers = 9999
Reads = 0
Writes = 188
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 173139928
Delta memory = 14280
Max memory = 173491552
Elapsed time= 0.302 sec
Buffers = 9999
Reads = 0
Writes = 0
Fetches = 401432
select * from GET_STATISTICS;

MON$STAT_ID                     49
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           0
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173194016
Delta memory = 54088
Max memory = 173491552
Elapsed time= 0.003 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 8
commit;
Current memory = 173128928
Delta memory = -65088
Max memory = 173491552
Elapsed time= 0.152 sec
Buffers = 9999
Reads = 0
Writes = 364
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 173172440
Delta memory = 12888
Max memory = 173491552
Elapsed time= 0.987 sec
Buffers = 9999
Reads = 0
Writes = 180
Fetches = 845022
select * from GET_STATISTICS;

MON$STAT_ID                     42
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             25058
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           25058
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173226848
Delta memory = 54408
Max memory = 173503320
Elapsed time= 0.002 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 8
commit;
Current memory = 173161760
Delta memory = -65088
Max memory = 173503320
Elapsed time= 0.125 sec
Buffers = 9999
Reads = 0
Writes = 364
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 173172760
Delta memory = 12704
Max memory = 173503320
Elapsed time= 0.598 sec
Buffers = 9999
Reads = 0
Writes = 352
Fetches = 701760
select * from GET_STATISTICS;

MON$STAT_ID                     42
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           0
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173226848
Delta memory = 54088
Max memory = 173503320
Elapsed time= 0.003 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 8
commit;
Current memory = 173161760
Delta memory = -65088
Max memory = 173503320
Elapsed time= 0.090 sec
Buffers = 9999
Reads = 0
Writes = 190
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 173172760
Delta memory = 12744
Max memory = 173503320
Elapsed time= 0.972 sec
Buffers = 9999
Reads = 0
Writes = 188
Fetches = 840608
select * from GET_STATISTICS;

MON$STAT_ID                     42
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             23906
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           23906
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173226848
Delta memory = 54088
Max memory = 173503320
Elapsed time= 0.003 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 8
commit;
Current memory = 173161760
Delta memory = -65088
Max memory = 173503320
Elapsed time= 0.123 sec
Buffers = 9999
Reads = 0
Writes = 358
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 173172760
Delta memory = 12744
Max memory = 173503320
Elapsed time= 0.369 sec
Buffers = 9999
Reads = 0
Writes = 362
Fetches = 702020
select * from GET_STATISTICS;

MON$STAT_ID                     42
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             0
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           0
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173226848
Delta memory = 54088
Max memory = 173503320
Elapsed time= 0.003 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 8
commit;
Current memory = 173161760
Delta memory = -65088
Max memory = 173503320
Elapsed time= 0.067 sec
Buffers = 9999
Reads = 0
Writes = 172
Fetches = 2

execute procedure MAKE_UPDATES;
Current memory = 173172760
Delta memory = 12560
Max memory = 173503320
Elapsed time= 0.970 sec
Buffers = 9999
Reads = 0
Writes = 226
Fetches = 830904
select * from GET_STATISTICS;

MON$STAT_ID                     42
MON$STAT_GROUP                  2
MON$RECORD_SEQ_READS            49999
MON$RECORD_IDX_READS            0
MON$RECORD_INSERTS              49999
MON$RECORD_UPDATES              0
MON$RECORD_DELETES              49999
MON$RECORD_BACKOUTS             0
MON$RECORD_PURGES               0
MON$RECORD_EXPUNGES             22419
MON$RECORD_LOCKS                0
MON$RECORD_WAITS                0
MON$RECORD_CONFLICTS            0
MON$BACKVERSION_READS           22419
MON$FRAGMENT_READS              0
MON$RECORD_RPT_READS            0


Current memory = 173226848
Delta memory = 54088
Max memory = 173503320
Elapsed time= 0.003 sec
Buffers = 9999
Reads = 0
Writes = 2
Fetches = 8
commit;
Current memory = 173161760
Delta memory = -65088
Max memory = 173503320
Elapsed time= 0.087 sec
Buffers = 9999
Reads = 0
Writes = 325
Fetches = 2


если надо могу выложить/выслать все батники+скрипты целиком.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39266753
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

мораль - чистить таблицу надо заранее. или переходить на gtt.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39267124
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

почти разу так и сделал:
- расчёты выполняем в GTT
- удаляем из основной чего нет в GTT
- merger-insert (update не нужен в данном случае)

То, что повторно "топтаться" по версиям в FB не стоит, для себя уяснил давно. Два update подряд в одной транзакции наглядно демонстрируют это. Но вот уйти ещё в два раза - напрягает. Можно конечно и через инкрементальный подход делать расчёты, но логику это усложняет и чревато ошибками, потому как подход "старую информацию стираем" нагляднее и менее подвержен ошибкам при доработке.

А вообще 10-20% для данного случая я бы пережил. И прекрасно понимаю замечание Влада о том, что в одно лицо запросы будут медленнее.
Просто обидно за любимую птицу. Почти всегда новые фичи, или подобное поведение прогоняю в PgSQL и MSSQL. И результат не всегда на нашей стороне.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39267164
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

регрессии в 3-ке изучаются, надеюсь будут и улучшения.
Твой пример я постараюсь завтра подробно рассмотреть.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39269255
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я нашёл причину регрессии с индексами, как вылечу - сообщу.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39269324
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Спасибо, буду ждать.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39269920
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://tracker.firebirdsql.org/browse/CORE-5302

прошу погонять завтрашний снапшот
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39269928
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Правильно ли я понимаю что теперь надо ещё и CORE-4914 перепроверить?
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39269941
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

да, конечно. Я проверял полдня сегодня, но лишняя проверка не помешает.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39270070
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

прогнал батнички с тестами, работает даже быстрее чем 2.5.
Надо будет завтра повнимательнее посмотреть.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39270088
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

ты из исходников что ли собирал?
Очень важно прогнать CORE-4914, для него Таблоид писал нетривиальный тест, причём баг проявляется только на высокой нагрузке. Этот тикет очень важный, потому что баг приводил к разрушению БД. Я ему помогал тестировать это на своём серваке. Попробую прогнать тот тест завтра.
...
Рейтинг: 0 / 0
Упала скорость update при переходе с 2.5 на 3.0
    #39270149
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисты из исходников что ли собирал?
Да. Влад столько сил потратил, не смог удержаться.
Симонов ДенисОчень важно прогнать CORE-4914...
Тоже постараюсь погонять тест Таблоида.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Упала скорость update при переходе с 2.5 на 3.0
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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