Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5 / 25 сообщений из 26, страница 1 из 2
01.02.2014, 00:17:49
    #38545741
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
hi all

вот тута приведены батники, позволяющие замерить время выполнения DML, которые запускаются одновременно 10 isql-окнами.
Тамошние батники генерят execute block'и с insert'-командами, но их несложно переделать и под update/delete или merge.

Сравнение скорости 10 окон по 1 млн строк каждое =vs= одно окно, вставляющее 10 млн строк, - уже было выполнено (там же).
Настал черёд сравнить ФБ 3.0 и 2.5 - когда они оба запускают 10 isql'ей.

Делать для SuperServer'a, КМК, бестолку: 3.0 порвёт предыдущую версию, т.к. в ней как раз для SS реализовано true smp.
Я сравнил скорость вставок для Super Classic 'a, выполняя на одинаковом кеше (2048) и базе с одинаковой страницей (8192).

И вот что получается для вставки 1 млн строк 10 окнами, таблица БЕЗ всяких индексов и констрейнтов, база в FW = OFF:build #work modecacheexecute block, run1execute block, run2execute block, run3commit, run1commit, run2commit, run3LI-T3.0.0.30824SuperClassic204819,8019,9920,500,020,010,0217,4917,2517,490,010,010,0320,5920,1517,470,020,020,01LI-V2.5.3.26737SuperClassic204844,1147,3448,110,010,000,0047,1045,8645,120,260,020,0244,2847,2347,650,010,020,30
Что-то подкрутили в лучшую сторону, если сравнивать с летом, когда только вышла альфа. Ибо в то время она была медленнее, чем 2.5 (ЕМНИП).
В аттаче - "сырые логи" для вышеприведенного замера.
В ближайшее время, надеюсь, сделаю аналогичный замер для индексированной таблицы, а также тест с update + delete командами.
...
Рейтинг: 0 / 0
01.02.2014, 09:35:36
    #38545821
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
ТаблоидЧто-то подкрутили в лучшую сторону
ты v3 с экстентами гонял или без?
...
Рейтинг: 0 / 0
01.02.2014, 09:42:35
    #38545823
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
dimitr,

нет, это обычный билд.
...
Рейтинг: 0 / 0
01.02.2014, 13:53:06
    #38545893
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоид,

когда ты уже научишься сравнивать в одинаковых условиях ?
У тебя БД от 2.5 в 2 раза больше, чем БД от 3.0
Я понятия не имею, влияет ли это на твой тест, но ты уже дал повод поставить его результаты под сомнения.

авторFirebird/linux AMD64 (access method), version "LI-V2.5.3.26737 Firebird 2.5"
...
Number of DB pages allocated = 616224

авторFirebird/linux AMD64 (remote server), version "LI-T3.0.0.30824 Firebird 3.0 Alpha 2/tcp (oel64)/P12"
...
Number of DB pages allocated = 308608
...
Рейтинг: 0 / 0
02.02.2014, 12:51:40
    #38546304
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
hvladУ тебя БД от 2.5 в 2 раза больше, чем БД от 3.0
Я понятия не имею, влияет ли это на твой тест, но ты уже дал повод поставить его результаты под сомнения.там были приведены фрагменты разных логов: к сож-ю, в каком-то случае я забыл пересоздать базу с пустого "эталона".
Ты оказался прав: результаты в 2.5 оказались завышены на 10 сек (и мне непонятно, почему: никаких индексов).
Повторил запуски, по 5 раз на каждом билде. С пересозданием базы с "эталона" перед каждым запуском.
gstat -h
* для базы 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.
/opt/fb30trnk/bin/gstat -h perfins_emp.fd0

Database "/var/db/fb30/perfins_emp.fd0"
Database header page information:
        Flags                   0
        Generation              14
        System Change Number    0
        Page size               8192
        ODS version             12.0
        Oldest transaction      1
        Oldest active           2
        Oldest snapshot         2
        Next transaction        6
        Sequence number         0
        Next attachment ID      2
        Implementation          HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Feb 2, 2014 12:11:42
        Attributes

    Variable header data:
        Sweep interval:         20000
        *END*
* для базы 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.
$ /opt/fb25sc/bin/gstat -h perfins_emp.fd0

Database "perfins_emp.fd0"
Database header page information:
        Flags                   0
        Checksum                12345
        Generation              14
        Page size               8192
        ODS version             11.2
        Oldest transaction      1
        Oldest active           2
        Oldest snapshot         2
        Next transaction        6
        Bumped transaction      1
        Sequence number         0
        Next attachment ID      2
        Implementation ID       24
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Feb 2, 2014 12:13:00
        Attributes

    Variable header data:
        Sweep interval:         20000
        *END*


Сырые логи в аттаче. Таблицы тут рисовать не буду, изабэло.
Вот результаты логов по findstr:
1) число страниц на старте каждого аттача:
1.1) для базы 3.0:
Код: plaintext
findstr /s /i /c:" number of db pages " tmpins*.log >runs_30_number_of_db_pages_allocated.txt
Код: 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.
run1\tmpins01.log:Number of DB pages allocated = 750
run1\tmpins02.log:Number of DB pages allocated = 665
run1\tmpins03.log:Number of DB pages allocated = 465
run1\tmpins04.log:Number of DB pages allocated = 897
run1\tmpins05.log:Number of DB pages allocated = 845
run1\tmpins06.log:Number of DB pages allocated = 980
run1\tmpins07.log:Number of DB pages allocated = 202
run1\tmpins08.log:Number of DB pages allocated = 556
run1\tmpins09.log:Number of DB pages allocated = 897
run1\tmpins10.log:Number of DB pages allocated = 556
run2\tmpins01.log:Number of DB pages allocated = 556
run2\tmpins02.log:Number of DB pages allocated = 389
run2\tmpins03.log:Number of DB pages allocated = 413
run2\tmpins04.log:Number of DB pages allocated = 796
run2\tmpins05.log:Number of DB pages allocated = 796
run2\tmpins06.log:Number of DB pages allocated = 750
run2\tmpins07.log:Number of DB pages allocated = 665
run2\tmpins08.log:Number of DB pages allocated = 389
run2\tmpins09.log:Number of DB pages allocated = 465
run2\tmpins10.log:Number of DB pages allocated = 202
run3\tmpins01.log:Number of DB pages allocated = 626
run3\tmpins02.log:Number of DB pages allocated = 796
run3\tmpins03.log:Number of DB pages allocated = 897
run3\tmpins04.log:Number of DB pages allocated = 438
run3\tmpins05.log:Number of DB pages allocated = 706
run3\tmpins06.log:Number of DB pages allocated = 413
run3\tmpins07.log:Number of DB pages allocated = 494
run3\tmpins08.log:Number of DB pages allocated = 626
run3\tmpins09.log:Number of DB pages allocated = 845
run3\tmpins10.log:Number of DB pages allocated = 202
run4\tmpins01.log:Number of DB pages allocated = 465
run4\tmpins02.log:Number of DB pages allocated = 524
run4\tmpins03.log:Number of DB pages allocated = 845
run4\tmpins04.log:Number of DB pages allocated = 845
run4\tmpins05.log:Number of DB pages allocated = 897
run4\tmpins06.log:Number of DB pages allocated = 438
run4\tmpins07.log:Number of DB pages allocated = 897
run4\tmpins08.log:Number of DB pages allocated = 524
run4\tmpins09.log:Number of DB pages allocated = 202
run4\tmpins10.log:Number of DB pages allocated = 438
run5\tmpins01.log:Number of DB pages allocated = 346
run5\tmpins02.log:Number of DB pages allocated = 524
run5\tmpins03.log:Number of DB pages allocated = 346
run5\tmpins04.log:Number of DB pages allocated = 326
run5\tmpins05.log:Number of DB pages allocated = 326
run5\tmpins06.log:Number of DB pages allocated = 626
run5\tmpins07.log:Number of DB pages allocated = 202
run5\tmpins08.log:Number of DB pages allocated = 665
run5\tmpins09.log:Number of DB pages allocated = 346
run5\tmpins10.log:Number of DB pages allocated = 590

1.2) для базы 2.5:
Код: plaintext
findstr /s /i /c:" number of db pages " tmpins*.log >runs_25_number_of_db_pages_allocated.txt
run1\tmpins01.log:
Код: 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.
Number of DB pages allocated = 205
run1\tmpins02.log:Number of DB pages allocated = 237
run1\tmpins03.log:Number of DB pages allocated = 465
run1\tmpins04.log:Number of DB pages allocated = 465
run1\tmpins05.log:Number of DB pages allocated = 326
run1\tmpins06.log:Number of DB pages allocated = 494
run1\tmpins07.log:Number of DB pages allocated = 438
run1\tmpins08.log:Number of DB pages allocated = 494
run1\tmpins09.log:Number of DB pages allocated = 494
run1\tmpins10.log:Number of DB pages allocated = 173
run2\tmpins01.log:Number of DB pages allocated = 307
run2\tmpins02.log:Number of DB pages allocated = 389
run2\tmpins03.log:Number of DB pages allocated = 389
run2\tmpins04.log:Number of DB pages allocated = 413
run2\tmpins05.log:Number of DB pages allocated = 465
run2\tmpins06.log:Number of DB pages allocated = 223
run2\tmpins07.log:Number of DB pages allocated = 326
run2\tmpins08.log:Number of DB pages allocated = 465
run2\tmpins09.log:Number of DB pages allocated = 474
run2\tmpins10.log:Number of DB pages allocated = 173
run3\tmpins01.log:Number of DB pages allocated = 590
run3\tmpins02.log:Number of DB pages allocated = 494
run3\tmpins03.log:Number of DB pages allocated = 626
run3\tmpins04.log:Number of DB pages allocated = 626
run3\tmpins05.log:Number of DB pages allocated = 556
run3\tmpins06.log:Number of DB pages allocated = 590
run3\tmpins07.log:Number of DB pages allocated = 494
run3\tmpins08.log:Number of DB pages allocated = 626
run3\tmpins09.log:Number of DB pages allocated = 556
run3\tmpins10.log:Number of DB pages allocated = 173
run4\tmpins01.log:Number of DB pages allocated = 590
run4\tmpins02.log:Number of DB pages allocated = 524
run4\tmpins03.log:Number of DB pages allocated = 626
run4\tmpins04.log:Number of DB pages allocated = 590
run4\tmpins05.log:Number of DB pages allocated = 524
run4\tmpins06.log:Number of DB pages allocated = 524
run4\tmpins07.log:Number of DB pages allocated = 665
run4\tmpins08.log:Number of DB pages allocated = 173
run4\tmpins09.log:Number of DB pages allocated = 665
run4\tmpins10.log:Number of DB pages allocated = 626
run5\tmpins01.log:Number of DB pages allocated = 494
run5\tmpins02.log:Number of DB pages allocated = 626
run5\tmpins03.log:Number of DB pages allocated = 413
run5\tmpins04.log:Number of DB pages allocated = 494
run5\tmpins05.log:Number of DB pages allocated = 665
run5\tmpins06.log:Number of DB pages allocated = 626
run5\tmpins07.log:Number of DB pages allocated = 665
run5\tmpins08.log:Number of DB pages allocated = 590
run5\tmpins09.log:Number of DB pages allocated = 590
run5\tmpins10.log:Number of DB pages allocated = 173


2) время выполнения вставок (коммиты везде практически 0 сек):
2.1) для базы 3.0:
Код: plaintext
findstr /r /s /i /c:" elapsed time= [^0] " tmpins*.log >runs_30_elapsed_time.txt
Код: 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.
run1\tmpins01.log:Elapsed time= 17.02 sec
run1\tmpins02.log:Elapsed time= 16.62 sec
run1\tmpins03.log:Elapsed time= 17.82 sec
run1\tmpins04.log:Elapsed time= 14.11 sec
run1\tmpins05.log:Elapsed time= 17.11 sec
run1\tmpins06.log:Elapsed time= 17.77 sec
run1\tmpins07.log:Elapsed time= 17.57 sec
run1\tmpins08.log:Elapsed time= 17.36 sec
run1\tmpins09.log:Elapsed time= 12.76 sec
run1\tmpins10.log:Elapsed time= 16.66 sec
run2\tmpins01.log:Elapsed time= 12.86 sec
run2\tmpins02.log:Elapsed time= 16.74 sec
run2\tmpins03.log:Elapsed time= 18.23 sec
run2\tmpins04.log:Elapsed time= 18.18 sec
run2\tmpins05.log:Elapsed time= 16.83 sec
run2\tmpins06.log:Elapsed time= 13.62 sec
run2\tmpins07.log:Elapsed time= 16.14 sec
run2\tmpins08.log:Elapsed time= 18.20 sec
run2\tmpins09.log:Elapsed time= 18.17 sec
run2\tmpins10.log:Elapsed time= 16.89 sec
run3\tmpins01.log:Elapsed time= 15.25 sec
run3\tmpins02.log:Elapsed time= 17.82 sec
run3\tmpins03.log:Elapsed time= 17.51 sec
run3\tmpins04.log:Elapsed time= 17.78 sec
run3\tmpins05.log:Elapsed time= 17.74 sec
run3\tmpins06.log:Elapsed time= 15.97 sec
run3\tmpins07.log:Elapsed time= 17.70 sec
run3\tmpins08.log:Elapsed time= 17.16 sec
run3\tmpins09.log:Elapsed time= 12.86 sec
run3\tmpins10.log:Elapsed time= 16.33 sec
run4\tmpins01.log:Elapsed time= 12.85 sec
run4\tmpins02.log:Elapsed time= 16.28 sec
run4\tmpins03.log:Elapsed time= 17.91 sec
run4\tmpins04.log:Elapsed time= 14.58 sec
run4\tmpins05.log:Elapsed time= 18.07 sec
run4\tmpins06.log:Elapsed time= 16.32 sec
run4\tmpins07.log:Elapsed time= 18.11 sec
run4\tmpins08.log:Elapsed time= 18.06 sec
run4\tmpins09.log:Elapsed time= 17.69 sec
run4\tmpins10.log:Elapsed time= 18.06 sec
run5\tmpins01.log:Elapsed time= 17.89 sec
run5\tmpins02.log:Elapsed time= 16.70 sec
run5\tmpins03.log:Elapsed time= 17.19 sec
run5\tmpins04.log:Elapsed time= 12.86 sec
run5\tmpins05.log:Elapsed time= 17.81 sec
run5\tmpins06.log:Elapsed time= 16.70 sec
run5\tmpins07.log:Elapsed time= 17.88 sec
run5\tmpins08.log:Elapsed time= 17.20 sec
run5\tmpins09.log:Elapsed time= 14.41 sec
run5\tmpins10.log:Elapsed time= 16.43 sec

2.2) для базы 2.5:
Код: plaintext
findstr /r /s /i /c:"elapsed time= [^0]" tmpins*.log >runs_25_elapsed_time.txt
Код: 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.
run1\tmpins01.log:Elapsed time= 36.28 sec
run1\tmpins02.log:Elapsed time= 36.15 sec
run1\tmpins03.log:Elapsed time= 35.81 sec
run1\tmpins04.log:Elapsed time= 35.86 sec
run1\tmpins05.log:Elapsed time= 36.24 sec
run1\tmpins06.log:Elapsed time= 35.59 sec
run1\tmpins07.log:Elapsed time= 33.93 sec
run1\tmpins08.log:Elapsed time= 35.74 sec
run1\tmpins09.log:Elapsed time= 36.20 sec
run1\tmpins10.log:Elapsed time= 34.48 sec
run2\tmpins01.log:Elapsed time= 33.55 sec
run2\tmpins02.log:Elapsed time= 33.26 sec
run2\tmpins03.log:Elapsed time= 33.99 sec
run2\tmpins04.log:Elapsed time= 34.22 sec
run2\tmpins05.log:Elapsed time= 32.43 sec
run2\tmpins06.log:Elapsed time= 34.19 sec
run2\tmpins07.log:Elapsed time= 34.38 sec
run2\tmpins08.log:Elapsed time= 33.82 sec
run2\tmpins09.log:Elapsed time= 34.22 sec
run2\tmpins10.log:Elapsed time= 32.92 sec
run3\tmpins01.log:Elapsed time= 31.68 sec
run3\tmpins02.log:Elapsed time= 32.87 sec
run3\tmpins03.log:Elapsed time= 32.57 sec
run3\tmpins04.log:Elapsed time= 34.42 sec
run3\tmpins05.log:Elapsed time= 34.46 sec
run3\tmpins06.log:Elapsed time= 33.52 sec
run3\tmpins07.log:Elapsed time= 34.83 sec
run3\tmpins08.log:Elapsed time= 35.33 sec
run3\tmpins09.log:Elapsed time= 35.18 sec
run3\tmpins10.log:Elapsed time= 33.72 sec
run4\tmpins01.log:Elapsed time= 37.81 sec
run4\tmpins02.log:Elapsed time= 36.80 sec
run4\tmpins03.log:Elapsed time= 37.56 sec
run4\tmpins04.log:Elapsed time= 37.64 sec
run4\tmpins05.log:Elapsed time= 36.75 sec
run4\tmpins06.log:Elapsed time= 37.62 sec
run4\tmpins07.log:Elapsed time= 36.50 sec
run4\tmpins08.log:Elapsed time= 37.89 sec
run4\tmpins09.log:Elapsed time= 37.61 sec
run4\tmpins10.log:Elapsed time= 36.40 sec
run5\tmpins01.log:Elapsed time= 38.14 sec
run5\tmpins02.log:Elapsed time= 37.82 sec
run5\tmpins03.log:Elapsed time= 38.09 sec
run5\tmpins04.log:Elapsed time= 37.62 sec
run5\tmpins05.log:Elapsed time= 37.45 sec
run5\tmpins06.log:Elapsed time= 37.98 sec
run5\tmpins07.log:Elapsed time= 37.27 sec
run5\tmpins08.log:Elapsed time= 37.96 sec
run5\tmpins09.log:Elapsed time= 37.86 sec
run5\tmpins10.log:Elapsed time= 37.31 sec
...
Рейтинг: 0 / 0
02.02.2014, 15:48:49
    #38546383
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоид,

ты уверен, что FB3 работал в режиме SC, а не SS ?
...
Рейтинг: 0 / 0
02.02.2014, 16:39:39
    #38546397
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Изменённые параметры конфигов:
1) ФБ 3.0 :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
$ grep "^[^#;]" /opt/fb30trnk/firebird.conf | sort
AuthClient = Legacy_Auth,Srp,Win_Sspi
AuthServer = Legacy_Auth,Srp
BugcheckAbort = 1
DefaultDbCachePages = 2048
ExternalFileAccess = Restrict /var/db/fb30
FileSystemCacheThreshold = 1024K
RemoteServicePort = 3333
 SharedCache = false
SharedDatabase = true 
TempBlockSize = 64M
TempCacheLimit = 4250000000
TempDirectories = /dev/shm
UserManager = Legacy_UserManager
WireCrypt = Disabled

2) ФБ 2.5 :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$ grep "^[^#;]" /opt/fb25sc/firebird.conf | sort
BugcheckAbort = 1
DefaultDbCachePages = 2048
ExternalFileAccess = Restrict /var/db/fb30
FileSystemCacheThreshold = 1000000
RemoteServicePort = 3252
TempBlockSize = 67108864
TempCacheLimit = 4250000000
TempDirectories = /dev/shm;/tmp

3.0 был неоднократно рестартован после установки SharedCache = false и SharedDatabase = true. Доказать, что он сейчас работает именно как SuperClassic, возможности у меня нет: просто утверждаю, что это сейчас именно так .
2.5 был собран в обычном режиме (как Classic), затем переведен в SuperClassic и работает сейчас именно как SC:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$ /opt/fb25sc/bin/isql localhost/3252:/var/db/fb25/perfins.fdb
SQL> set list on;
SQL> select mon$server_pid from mon$attachments rows 1;

MON$SERVER_PID                  11248

SQL> shell cat /proc/11248/cmdline;
/opt/fb25sc/bin/ fb_smp_server 

ЗЫ-1. Когда уже в mon$ появится инфа о том, в какой архитектуре как работает сейчас ФБ ? Почему нет этой инфы до сих пор, через 6 лет после появления монов - вообще не понимаю

ЗЫ-2. И еще раз батники, чтобы всё в одном месте было:
1) основной, создающий .sql-скрипты: и делающий вызов вспомогательного батника с коннектом к 2.5 либо к 3.0:
perfins_parall.bat
Код: 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.
@echo off
setlocal enabledelayedexpansion enableextensions
set n_max=1000000
set r_max=1000
set rp=)
if .%1.==.. set /a n=10
for /l %%x in (1, 1, %n%) do (
  set /a c=100+%%x
  set sql=tmpins!c:~1,2!.tmp
  echo !sql!
  del !sql! 2>nul
  echo set echo on;                  >>!sql!
  echo show version;                 >>!sql!
  echo show database;                >>!sql!
  echo show sequence;                >>!sql!
  echo show table;                >>!sql!
  echo show index;                >>!sql!
  echo set echo off;                  >>!sql!
  echo set list on;     >>!sql! 
  echo select current_connection attach_id, current_timestamp dts_before_ins from rdb$database;     >>!sql!
  echo set stat on;     >>!sql! 
  echo -- set list on; select * from mon$database; set list off;  >>!sql!
  echo set echo on;                  >>!sql!
  echo set term ^^;                  >>!sql!
  echo execute block as              >>!sql! 
  echo   declare n int = !n_max!;    >>!sql!
  echo begin                         >>!sql!
  echo   while (n^>0!rp! do              >>!sql!
  echo     insert into t!c:~1,2!(id,x,y,z, u,v,w!rp!   >>!sql!
  echo     values ( :n, rand(!rp!*!r_max!, rand(!rp!*!r_max!, rand(!rp!*!r_max!, >>!sql!
  echo              rpad('', 20, 'qwerty'!rp!,   >>!sql!
  echo              rpad('', 20, 'asdfgh'!rp!,   >>!sql!
  echo              rpad('', 20, 'zxcvbn'!rp!    >>!sql!
  echo            !rp!                           >>!sql!
  echo     returning :n-1 into n;             >>!sql!
  echo end^^                          >>!sql!
  echo set term ;^^                   >>!sql!
  echo commit;                       >>!sql!
  echo set echo off;                 >>!sql!
  echo set stat off;                 >>!sql!
  echo select current_connection attach_id, current_timestamp dts_after_ins from rdb$database;     >>!sql!
  echo show sequence;                >>!sql!
  echo -- select count(*!rp! result_count from t01;   >>!sql!

)

for /l %%x in (1, 1, %n%) do (
  set /a c=100+%%x
  set sql=tmpins!c:~1,2!.tmp
  set log=tmpins!c:~1,2!.log
  
  @echo on
  @rem start perfins_aux.bat 192.168.0.220/3333:/var/db/fb30/perfins.fdb !sql! !log!
  start perfins_aux.bat 192.168.0.220/3252:/var/db/fb25/perfins.fdb !sql! !log!
  @echo off
)
exit
2) вспомогательный, выполняющий собственно запуски isql'ей через start:
perfins_aux.bat
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
@echo off
set db=%1
set sql=%2
set log=%3
echo %sql%
echo %log%
@echo on
isql %db% -i %sql% 1>%log% 2>&1
del %sql% 2>nul
exit
...
Рейтинг: 0 / 0
02.02.2014, 17:12:24
    #38546409
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоид,

если в MON$ATTACHENTS соединения Cache Writer нет, то точно не SS. А вот отличить CS от SC уже сложнее.
...
Рейтинг: 0 / 0
02.02.2014, 18:09:28
    #38546440
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Симонов ДенисТаблоид,

если в MON$ATTACHENTS соединения Cache Writer нет, то точно не SS. А вот отличить CS от SC уже сложнее.нету его там:
Код: 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.
SQL> set list on; show version;
ISQL Version: LI-T3.0.0.30824 Firebird 3.0 Alpha 2
Server version:
Firebird/Linux/AMD/Intel/x64 (access method), version "LI-T3.0.0.30824 Firebird 3.0 Alpha 2"
Firebird/Linux/AMD/Intel/x64 (remote server), version "LI-T3.0.0.30824 Firebird 3.0 Alpha 2/tcp (oel64)/P13"
Firebird/Linux/AMD/Intel/x64 (remote interface), version "LI-T3.0.0.30824 Firebird 3.0 Alpha 2/tcp (oel64)/P13"
on disk structure version 12.0
SQL> select * from mon$attachments;

MON$ATTACHMENT_ID               43
MON$SERVER_PID                  16482
MON$STATE                       1
MON$ATTACHMENT_NAME             /var/db/fb30/perfins.fdb
MON$USER                        SYSDBA
MON$ROLE                        NONE
MON$REMOTE_PROTOCOL             TCPv4
MON$REMOTE_ADDRESS              127.0.0.1
MON$REMOTE_PID                  18032
MON$CHARACTER_SET_ID            0
MON$TIMESTAMP                   2014-02-02 18:07:30.7350
MON$GARBAGE_COLLECTION          1
MON$REMOTE_PROCESS              /opt/fb30trnk/bin/isql
MON$STAT_ID                     2
MON$CLIENT_VERSION              LI-T3.0.0.30824 Firebird 3.0 Alpha 2
MON$REMOTE_VERSION              P13
MON$REMOTE_HOST                 oel64
MON$REMOTE_OS_USER              root
MON$AUTH_METHOD                 Legacy_Auth
...
Рейтинг: 0 / 0
02.02.2014, 21:54:21
    #38546600
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
... в это можно не поверить, но: когда вставка идёт так, что для новых записей в поле id пишется результат gen_id(g, 1), то... железный_конь-3.0 проигрывает старой деревенской кляче_2.5 в два раза.
1) число страниц на старте каждого аттача:
1.1) для базы 3.0:
Код: plaintext
findstr /s /i /c:"number of db pages" tmpins*.log >runs_30_number_of_db_pages_allocated.txt:
Код: 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.
run1\tmpins01.log:Number of DB pages allocated = 556
run1\tmpins02.log:Number of DB pages allocated = 590
run1\tmpins03.log:Number of DB pages allocated = 626
run1\tmpins04.log:Number of DB pages allocated = 626
run1\tmpins05.log:Number of DB pages allocated = 413
run1\tmpins06.log:Number of DB pages allocated = 556
run1\tmpins07.log:Number of DB pages allocated = 626
run1\tmpins08.log:Number of DB pages allocated = 556
run1\tmpins09.log:Number of DB pages allocated = 202
run1\tmpins10.log:Number of DB pages allocated = 626
run2\tmpins01.log:Number of DB pages allocated = 524
run2\tmpins02.log:Number of DB pages allocated = 524
run2\tmpins03.log:Number of DB pages allocated = 524
run2\tmpins04.log:Number of DB pages allocated = 413
run2\tmpins05.log:Number of DB pages allocated = 413
run2\tmpins06.log:Number of DB pages allocated = 524
run2\tmpins07.log:Number of DB pages allocated = 524
run2\tmpins08.log:Number of DB pages allocated = 202
run2\tmpins09.log:Number of DB pages allocated = 524
run2\tmpins10.log:Number of DB pages allocated = 413
run3\tmpins01.log:Number of DB pages allocated = 413
run3\tmpins02.log:Number of DB pages allocated = 465
run3\tmpins03.log:Number of DB pages allocated = 465
run3\tmpins04.log:Number of DB pages allocated = 438
run3\tmpins05.log:Number of DB pages allocated = 389
run3\tmpins06.log:Number of DB pages allocated = 413
run3\tmpins07.log:Number of DB pages allocated = 413
run3\tmpins08.log:Number of DB pages allocated = 465
run3\tmpins09.log:Number of DB pages allocated = 413
run3\tmpins10.log:Number of DB pages allocated = 202
run4\tmpins01.log:Number of DB pages allocated = 494
run4\tmpins02.log:Number of DB pages allocated = 590
run4\tmpins03.log:Number of DB pages allocated = 346
run4\tmpins04.log:Number of DB pages allocated = 556
run4\tmpins05.log:Number of DB pages allocated = 556
run4\tmpins06.log:Number of DB pages allocated = 556
run4\tmpins07.log:Number of DB pages allocated = 556
run4\tmpins08.log:Number of DB pages allocated = 524
run4\tmpins09.log:Number of DB pages allocated = 556
run4\tmpins10.log:Number of DB pages allocated = 202
run5\tmpins01.log:Number of DB pages allocated = 796
run5\tmpins02.log:Number of DB pages allocated = 796
run5\tmpins03.log:Number of DB pages allocated = 796
run5\tmpins04.log:Number of DB pages allocated = 202
run5\tmpins05.log:Number of DB pages allocated = 202
run5\tmpins06.log:Number of DB pages allocated = 1012
run5\tmpins07.log:Number of DB pages allocated = 1012
run5\tmpins08.log:Number of DB pages allocated = 1012
run5\tmpins09.log:Number of DB pages allocated = 1012
run5\tmpins10.log:Number of DB pages allocated = 953
1.2) для базы 2.5:
Код: plaintext
findstr /s /i /c:"number of db pages" tmpins*.log >runs_25_number_of_db_pages_allocated.txt:
Код: 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.
run1\tmpins01.log:Number of DB pages allocated = 205
run1\tmpins02.log:Number of DB pages allocated = 289
run1\tmpins03.log:Number of DB pages allocated = 292
run1\tmpins04.log:Number of DB pages allocated = 210
run1\tmpins05.log:Number of DB pages allocated = 235
run1\tmpins06.log:Number of DB pages allocated = 289
run1\tmpins07.log:Number of DB pages allocated = 326
run1\tmpins08.log:Number of DB pages allocated = 307
run1\tmpins09.log:Number of DB pages allocated = 307
run1\tmpins10.log:Number of DB pages allocated = 173
run2\tmpins01.log:Number of DB pages allocated = 465
run2\tmpins02.log:Number of DB pages allocated = 413
run2\tmpins03.log:Number of DB pages allocated = 389
run2\tmpins04.log:Number of DB pages allocated = 289
run2\tmpins05.log:Number of DB pages allocated = 247
run2\tmpins06.log:Number of DB pages allocated = 173
run2\tmpins07.log:Number of DB pages allocated = 367
run2\tmpins08.log:Number of DB pages allocated = 413
run2\tmpins09.log:Number of DB pages allocated = 438
run2\tmpins10.log:Number of DB pages allocated = 413
run3\tmpins01.log:Number of DB pages allocated = 289
run3\tmpins02.log:Number of DB pages allocated = 524
run3\tmpins03.log:Number of DB pages allocated = 590
run3\tmpins04.log:Number of DB pages allocated = 556
run3\tmpins05.log:Number of DB pages allocated = 438
run3\tmpins06.log:Number of DB pages allocated = 465
run3\tmpins07.log:Number of DB pages allocated = 346
run3\tmpins08.log:Number of DB pages allocated = 494
run3\tmpins09.log:Number of DB pages allocated = 494
run3\tmpins10.log:Number of DB pages allocated = 173
run4\tmpins01.log:Number of DB pages allocated = 465
run4\tmpins02.log:Number of DB pages allocated = 494
run4\tmpins03.log:Number of DB pages allocated = 590
run4\tmpins04.log:Number of DB pages allocated = 494
run4\tmpins05.log:Number of DB pages allocated = 556
run4\tmpins06.log:Number of DB pages allocated = 590
run4\tmpins07.log:Number of DB pages allocated = 556
run4\tmpins08.log:Number of DB pages allocated = 524
run4\tmpins09.log:Number of DB pages allocated = 556
run4\tmpins10.log:Number of DB pages allocated = 173
run5\tmpins01.log:Number of DB pages allocated = 389
run5\tmpins02.log:Number of DB pages allocated = 389
run5\tmpins03.log:Number of DB pages allocated = 438
run5\tmpins04.log:Number of DB pages allocated = 465
run5\tmpins05.log:Number of DB pages allocated = 494
run5\tmpins06.log:Number of DB pages allocated = 438
run5\tmpins07.log:Number of DB pages allocated = 326
run5\tmpins08.log:Number of DB pages allocated = 494
run5\tmpins09.log:Number of DB pages allocated = 173
run5\tmpins10.log:Number of DB pages allocated = 465

2) время выполнения вставок:
2.1) для базы 3.0:
Код: plaintext
findstr /r /s /i /c:"elapsed time= [^0]" tmpins*.log >runs_30_elapsed_time.txt
Код: 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.
run1\tmpins01.log:Elapsed time= 209.61 sec
run1\tmpins02.log:Elapsed time= 209.34 sec
run1\tmpins03.log:Elapsed time= 209.53 sec
run1\tmpins04.log:Elapsed time= 209.51 sec
run1\tmpins05.log:Elapsed time= 209.69 sec
run1\tmpins06.log:Elapsed time= 209.62 sec
run1\tmpins07.log:Elapsed time= 209.54 sec
run1\tmpins08.log:Elapsed time= 209.64 sec
run1\tmpins09.log:Elapsed time= 205.59 sec
run1\tmpins10.log:Elapsed time= 209.33 sec
run2\tmpins01.log:Elapsed time= 211.07 sec
run2\tmpins02.log:Elapsed time= 211.05 sec
run2\tmpins03.log:Elapsed time= 210.81 sec
run2\tmpins04.log:Elapsed time= 211.13 sec
run2\tmpins05.log:Elapsed time= 211.18 sec
run2\tmpins06.log:Elapsed time= 211.04 sec
run2\tmpins07.log:Elapsed time= 211.07 sec
run2\tmpins08.log:Elapsed time= 207.20 sec
run2\tmpins09.log:Elapsed time= 210.94 sec
run2\tmpins10.log:Elapsed time= 210.32 sec
run3\tmpins01.log:Elapsed time= 212.05 sec
run3\tmpins02.log:Elapsed time= 211.97 sec
run3\tmpins03.log:Elapsed time= 212.13 sec
run3\tmpins04.log:Elapsed time= 212.11 sec
run3\tmpins05.log:Elapsed time= 212.09 sec
run3\tmpins06.log:Elapsed time= 212.08 sec
run3\tmpins07.log:Elapsed time= 212.13 sec
run3\tmpins08.log:Elapsed time= 212.05 sec
run3\tmpins09.log:Elapsed time= 212.15 sec
run3\tmpins10.log:Elapsed time= 209.28 sec
run4\tmpins01.log:Elapsed time= 214.72 sec
run4\tmpins02.log:Elapsed time= 214.70 sec
run4\tmpins03.log:Elapsed time= 214.00 sec
run4\tmpins04.log:Elapsed time= 214.67 sec
run4\tmpins05.log:Elapsed time= 214.73 sec
run4\tmpins06.log:Elapsed time= 214.72 sec
run4\tmpins07.log:Elapsed time= 214.55 sec
run4\tmpins08.log:Elapsed time= 214.52 sec
run4\tmpins09.log:Elapsed time= 214.67 sec
run4\tmpins10.log:Elapsed time= 210.99 sec
run5\tmpins01.log:Elapsed time= 211.30 sec
run5\tmpins02.log:Elapsed time= 211.30 sec
run5\tmpins03.log:Elapsed time= 211.60 sec
run5\tmpins04.log:Elapsed time= 207.58 sec
run5\tmpins05.log:Elapsed time= 208.56 sec
run5\tmpins06.log:Elapsed time= 211.38 sec
run5\tmpins07.log:Elapsed time= 211.31 sec
run5\tmpins08.log:Elapsed time= 211.47 sec
run5\tmpins09.log:Elapsed time= 211.35 sec
run5\tmpins10.log:Elapsed time= 211.47 sec
2.2) для базы 2.5:
Код: plaintext
findstr /r /s /i /c:"elapsed time= [^0]" tmpins*.log >runs_25_elapsed_time.txt
Код: 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.
run1\tmpins01.log:Elapsed time= 102.39 sec
run1\tmpins02.log:Elapsed time= 101.74 sec
run1\tmpins03.log:Elapsed time= 102.27 sec
run1\tmpins04.log:Elapsed time= 102.70 sec
run1\tmpins05.log:Elapsed time= 102.60 sec
run1\tmpins06.log:Elapsed time= 101.84 sec
run1\tmpins07.log:Elapsed time= 101.68 sec
run1\tmpins08.log:Elapsed time= 102.58 sec
run1\tmpins09.log:Elapsed time= 101.15 sec
run1\tmpins10.log:Elapsed time= 101.28 sec
run2\tmpins01.log:Elapsed time= 100.98 sec
run2\tmpins02.log:Elapsed time= 102.85 sec
run2\tmpins03.log:Elapsed time= 103.17 sec
run2\tmpins04.log:Elapsed time= 103.12 sec
run2\tmpins05.log:Elapsed time= 103.42 sec
run2\tmpins06.log:Elapsed time= 100.12 sec
run2\tmpins07.log:Elapsed time= 101.93 sec
run2\tmpins08.log:Elapsed time= 101.67 sec
run2\tmpins09.log:Elapsed time= 102.45 sec
run2\tmpins10.log:Elapsed time= 103.09 sec
run3\tmpins01.log:Elapsed time= 103.23 sec
run3\tmpins02.log:Elapsed time= 102.81 sec
run3\tmpins03.log:Elapsed time= 103.03 sec
run3\tmpins04.log:Elapsed time= 103.14 sec
run3\tmpins05.log:Elapsed time= 102.91 sec
run3\tmpins06.log:Elapsed time= 102.53 sec
run3\tmpins07.log:Elapsed time= 102.78 sec
run3\tmpins08.log:Elapsed time= 103.22 sec
run3\tmpins09.log:Elapsed time= 102.03 sec
run3\tmpins10.log:Elapsed time= 103.29 sec
run4\tmpins01.log:Elapsed time= 102.53 sec
run4\tmpins02.log:Elapsed time= 102.37 sec
run4\tmpins03.log:Elapsed time= 101.18 sec
run4\tmpins04.log:Elapsed time= 102.10 sec
run4\tmpins05.log:Elapsed time= 101.71 sec
run4\tmpins06.log:Elapsed time= 102.39 sec
run4\tmpins07.log:Elapsed time= 100.67 sec
run4\tmpins08.log:Elapsed time= 101.80 sec
run4\tmpins09.log:Elapsed time= 102.46 sec
run4\tmpins10.log:Elapsed time= 100.78 sec
run5\tmpins01.log:Elapsed time= 101.29 sec
run5\tmpins02.log:Elapsed time= 100.45 sec
run5\tmpins03.log:Elapsed time= 102.31 sec
run5\tmpins04.log:Elapsed time= 101.72 sec
run5\tmpins05.log:Elapsed time= 102.52 sec
run5\tmpins06.log:Elapsed time= 102.70 sec
run5\tmpins07.log:Elapsed time= 100.80 sec
run5\tmpins08.log:Elapsed time= 102.48 sec
run5\tmpins09.log:Elapsed time= 101.02 sec
run5\tmpins10.log:Elapsed time= 102.24 sec

В аттаче - все сырые логи этого замера.
PS. Напомню: все 10 таблиц - БЕЗ индексов (но генератор дёргался во всех случаях один ).
...
Рейтинг: 0 / 0
02.02.2014, 22:58:37
    #38546635
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
А вот если сравнить вставку в индексированные таблицы (БЕЗ дёргания генератора):
DDL
Код: 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.
set term ^;
execute block as begin
  begin
  execute statement 'create sequence g;';
  when any do begin end
  end
end^
set term ;^
commit;
recreate table t01(id int primary key using index t01_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t01_zy on t01(z,y);
create index t01_yx on t01(y,x);
create index t01_zx on t01(z,x);
create descending index t01_xy_dec on t01(x,y);
create descending index t01_xz_dec on t01(x,z);
create descending index t01_yz_dec on t01(y,z);
create index t01_uvw_asc on t01(w,v,u);
create descending index t01_uvw_dec on t01(u,v,w);

recreate table t02(id int primary key using index t02_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t02_zy on t02(z,y);
create index t02_yx on t02(y,x);
create index t02_zx on t02(z,x);
create descending index t02_xy_dec on t02(x,y);
create descending index t02_xz_dec on t02(x,z);
create descending index t02_yz_dec on t02(y,z);
create index t02_uvw_asc on t02(w,v,u);
create descending index t02_uvw_dec on t02(u,v,w);

recreate table t03(id int primary key using index t03_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t03_zy on t03(z,y);
create index t03_yx on t03(y,x);
create index t03_zx on t03(z,x);
create descending index t03_xy_dec on t03(x,y);
create descending index t03_xz_dec on t03(x,z);
create descending index t03_yz_dec on t03(y,z);
create index t03_uvw_asc on t03(w,v,u);
create descending index t03_uvw_dec on t03(u,v,w);

recreate table t04(id int primary key using index t04_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t04_zy on t04(z,y);
create index t04_yx on t04(y,x);
create index t04_zx on t04(z,x);
create descending index t04_xy_dec on t04(x,y);
create descending index t04_xz_dec on t04(x,z);
create descending index t04_yz_dec on t04(y,z);
create index t04_uvw_asc on t04(w,v,u);
create descending index t04_uvw_dec on t04(u,v,w);

recreate table t05(id int primary key using index t05_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t05_zy on t05(z,y);
create index t05_yx on t05(y,x);
create index t05_zx on t05(z,x);
create descending index t05_xy_dec on t05(x,y);
create descending index t05_xz_dec on t05(x,z);
create descending index t05_yz_dec on t05(y,z);
create index t05_uvw_asc on t05(w,v,u);
create descending index t05_uvw_dec on t05(u,v,w);

recreate table t06(id int primary key using index t06_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t06_zy on t06(z,y);
create index t06_yx on t06(y,x);
create index t06_zx on t06(z,x);
create descending index t06_xy_dec on t06(x,y);
create descending index t06_xz_dec on t06(x,z);
create descending index t06_yz_dec on t06(y,z);
create index t06_uvw_asc on t06(w,v,u);
create descending index t06_uvw_dec on t06(u,v,w);

recreate table t07(id int primary key using index t07_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t07_zy on t07(z,y);
create index t07_yx on t07(y,x);
create index t07_zx on t07(z,x);
create descending index t07_xy_dec on t07(x,y);
create descending index t07_xz_dec on t07(x,z);
create descending index t07_yz_dec on t07(y,z);
create index t07_uvw_asc on t07(w,v,u);
create descending index t07_uvw_dec on t07(u,v,w);

recreate table t08(id int primary key using index t08_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t08_zy on t08(z,y);
create index t08_yx on t08(y,x);
create index t08_zx on t08(z,x);
create descending index t08_xy_dec on t08(x,y);
create descending index t08_xz_dec on t08(x,z);
create descending index t08_yz_dec on t08(y,z);
create index t08_uvw_asc on t08(w,v,u);
create descending index t08_uvw_dec on t08(u,v,w);

recreate table t09(id int primary key using index t09_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t09_zy on t09(z,y);
create index t09_yx on t09(y,x);
create index t09_zx on t09(z,x);
create descending index t09_xy_dec on t09(x,y);
create descending index t09_xz_dec on t09(x,z);
create descending index t09_yz_dec on t09(y,z);
create index t09_uvw_asc on t09(w,v,u);
create descending index t09_uvw_dec on t09(u,v,w);

recreate table t10(id int primary key using index t10_pk_idx, x int, y int, z int, u varchar(20), v varchar(20), w varchar(20));
create index t10_zy on t10(z,y);
create index t10_yx on t10(y,x);
create index t10_zx on t10(z,x);
create descending index t10_xy_dec on t10(x,y);
create descending index t10_xz_dec on t10(x,z);
create descending index t10_yz_dec on t10(y,z);
create index t10_uvw_asc on t10(w,v,u);
create descending index t10_uvw_dec on t10(u,v,w);
commit;
- то при работе 10 коннектов, каждый из которых делает вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set term ^;                  
execute block as               
  declare n int = 100000;    
begin                         
  while (n>0) do              
    insert into t01(id,x,y,z, u,v,w)   
    values ( :n, rand()*1000, rand()*1000, rand()*1000, 
             rpad( '', 20, left(uuid_to_char(gen_uuid()), 5 ) ),   
             rpad( '', 20, left(uuid_to_char(gen_uuid()), 5 ) ),   
             rpad( '', 20, left(uuid_to_char(gen_uuid()), 5 ) )    
           )                           
    returning :n-1 into n;             
end^
- будем видеть выигрыш уже ФБ-3 над ФБ-2.5.
runs_30_elapsed_time.txt: ~45"
Код: 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.
run1\tmpins01.log:Elapsed time= 45.50 sec
run1\tmpins02.log:Elapsed time= 45.42 sec
run1\tmpins03.log:Elapsed time= 45.60 sec
run1\tmpins04.log:Elapsed time= 45.85 sec
run1\tmpins05.log:Elapsed time= 45.18 sec
run1\tmpins06.log:Elapsed time= 45.50 sec
run1\tmpins07.log:Elapsed time= 45.36 sec
run1\tmpins08.log:Elapsed time= 45.04 sec
run1\tmpins09.log:Elapsed time= 41.72 sec
run1\tmpins10.log:Elapsed time= 45.84 sec
run2\tmpins01.log:Elapsed time= 47.14 sec
run2\tmpins02.log:Elapsed time= 46.27 sec
run2\tmpins03.log:Elapsed time= 46.36 sec
run2\tmpins04.log:Elapsed time= 47.07 sec
run2\tmpins05.log:Elapsed time= 45.77 sec
run2\tmpins06.log:Elapsed time= 46.83 sec
run2\tmpins07.log:Elapsed time= 46.69 sec
run2\tmpins08.log:Elapsed time= 46.29 sec
run2\tmpins09.log:Elapsed time= 46.08 sec
run2\tmpins10.log:Elapsed time= 44.86 sec
run3\tmpins01.log:Elapsed time= 46.09 sec
run3\tmpins02.log:Elapsed time= 46.11 sec
run3\tmpins03.log:Elapsed time= 46.52 sec
run3\tmpins04.log:Elapsed time= 46.05 sec
run3\tmpins05.log:Elapsed time= 45.57 sec
run3\tmpins06.log:Elapsed time= 44.06 sec
run3\tmpins07.log:Elapsed time= 45.51 sec
run3\tmpins08.log:Elapsed time= 46.72 sec
run3\tmpins09.log:Elapsed time= 46.17 sec
run3\tmpins10.log:Elapsed time= 45.25 sec
run4\tmpins01.log:Elapsed time= 46.22 sec
run4\tmpins02.log:Elapsed time= 46.77 sec
run4\tmpins03.log:Elapsed time= 47.00 sec
run4\tmpins04.log:Elapsed time= 46.52 sec
run4\tmpins05.log:Elapsed time= 46.99 sec
run4\tmpins06.log:Elapsed time= 46.56 sec
run4\tmpins07.log:Elapsed time= 47.05 sec
run4\tmpins08.log:Elapsed time= 46.52 sec
run4\tmpins09.log:Elapsed time= 46.02 sec
run4\tmpins10.log:Elapsed time= 46.02 sec
run5\tmpins01.log:Elapsed time= 45.57 sec
run5\tmpins02.log:Elapsed time= 46.01 sec
run5\tmpins03.log:Elapsed time= 45.72 sec
run5\tmpins04.log:Elapsed time= 45.86 sec
run5\tmpins05.log:Elapsed time= 46.34 sec
run5\tmpins06.log:Elapsed time= 45.53 sec
run5\tmpins07.log:Elapsed time= 45.87 sec
run5\tmpins08.log:Elapsed time= 45.83 sec
run5\tmpins09.log:Elapsed time= 44.52 sec
run5\tmpins10.log:Elapsed time= 45.50 sec
runs_25_elapsed_time.txt: ~55"
Код: 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.
run1\tmpins01.log:Elapsed time= 54.74 sec
run1\tmpins02.log:Elapsed time= 55.19 sec
run1\tmpins03.log:Elapsed time= 55.81 sec
run1\tmpins04.log:Elapsed time= 55.74 sec
run1\tmpins05.log:Elapsed time= 55.53 sec
run1\tmpins06.log:Elapsed time= 55.83 sec
run1\tmpins07.log:Elapsed time= 55.69 sec
run1\tmpins08.log:Elapsed time= 55.89 sec
run1\tmpins09.log:Elapsed time= 55.78 sec
run1\tmpins10.log:Elapsed time= 55.89 sec
run2\tmpins01.log:Elapsed time= 56.09 sec
run2\tmpins02.log:Elapsed time= 55.78 sec
run2\tmpins03.log:Elapsed time= 55.70 sec
run2\tmpins04.log:Elapsed time= 56.11 sec
run2\tmpins05.log:Elapsed time= 55.47 sec
run2\tmpins06.log:Elapsed time= 55.74 sec
run2\tmpins07.log:Elapsed time= 56.07 sec
run2\tmpins08.log:Elapsed time= 55.84 sec
run2\tmpins09.log:Elapsed time= 55.82 sec
run2\tmpins10.log:Elapsed time= 55.96 sec
run3\tmpins01.log:Elapsed time= 56.43 sec
run3\tmpins02.log:Elapsed time= 55.75 sec
run3\tmpins03.log:Elapsed time= 56.31 sec
run3\tmpins04.log:Elapsed time= 56.12 sec
run3\tmpins05.log:Elapsed time= 55.51 sec
run3\tmpins06.log:Elapsed time= 56.28 sec
run3\tmpins07.log:Elapsed time= 56.13 sec
run3\tmpins08.log:Elapsed time= 56.40 sec
run3\tmpins09.log:Elapsed time= 56.29 sec
run3\tmpins10.log:Elapsed time= 55.75 sec
run4\tmpins01.log:Elapsed time= 55.33 sec
run4\tmpins02.log:Elapsed time= 55.73 sec
run4\tmpins03.log:Elapsed time= 55.44 sec
run4\tmpins04.log:Elapsed time= 55.00 sec
run4\tmpins05.log:Elapsed time= 55.73 sec
run4\tmpins06.log:Elapsed time= 55.37 sec
run4\tmpins07.log:Elapsed time= 55.70 sec
run4\tmpins08.log:Elapsed time= 55.52 sec
run4\tmpins09.log:Elapsed time= 55.83 sec
run4\tmpins10.log:Elapsed time= 55.60 sec
run5\tmpins01.log:Elapsed time= 56.05 sec
run5\tmpins02.log:Elapsed time= 55.94 sec
run5\tmpins03.log:Elapsed time= 55.75 sec
run5\tmpins04.log:Elapsed time= 55.92 sec
run5\tmpins05.log:Elapsed time= 55.78 sec
run5\tmpins06.log:Elapsed time= 55.89 sec
run5\tmpins07.log:Elapsed time= 55.37 sec
run5\tmpins08.log:Elapsed time= 55.89 sec
run5\tmpins09.log:Elapsed time= 55.96 sec
run5\tmpins10.log:Elapsed time= 55.19 sec

В аттаче - логи прогонов 1...4 (5-й прогон удалил: архив вылез за лимит 150К).

Краткий промежуточный итог: чё-то там с дёрганием генератора "провалилось" в ФБ-3, а в остальном - всё пучком (пока :)).
...
Рейтинг: 0 / 0
02.02.2014, 23:09:34
    #38546641
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоидчё-то там с дёрганием генератора "провалилось" в ФБ-3
эта гипотеза легко проверяется безо всяких инсертов, ы?
...
Рейтинг: 0 / 0
02.02.2014, 23:14:23
    #38546648
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
dimitrТаблоидчё-то там с дёрганием генератора "провалилось" в ФБ-3
эта гипотеза легко проверяется безо всяких инсертов, ы?т.е. просто запустить цикл типа
Код: sql
1.
2.
3.
4.
while (n>0) do 
   v = gen_id(g,1);
   n=n-1;
end

- так что ле ?
...
Рейтинг: 0 / 0
02.02.2014, 23:17:06
    #38546653
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоид,

например, так
...
Рейтинг: 0 / 0
02.02.2014, 23:18:49
    #38546657
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоидчё-то там с дёрганием генератора "провалилось" в ФБ-3

может из за проверки прав на использование
...
Рейтинг: 0 / 0
03.02.2014, 00:36:19
    #38546681
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Симонов ДенисТаблоидчё-то там с дёрганием генератора "провалилось" в ФБ-3может из за проверки прав на использованиея ф шоке: старый ФБ 2.5 быстрее нового ФБ-3.0 в... 15 раз.
Вот что делал каждый из 10 коннектов, запускаемых практически одновременно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
set stat on;      
set echo on;                  
set term ^;                  
execute block as               
  declare n int = 1000000;    
  declare v int;              
begin                         
  while (n>0) do              
  begin                   
    v = gen_id( g, 1); 
    n = n-1;            
  end                     
end^                          
- т.е. никаких обращений к базе, просто дёргание генератора.
Сделано 5 замеров для ФБ 3.0 и столько же для ФБ 2.5.

Всё найдёте в аттаче, но если коротко, то: ФБ 3.0 = 150 сек, ФБ 2.5 = 10 сек.
Если такое расхождение вызвано проверкой прав, то выглядит это странно: он что, проверяет права на генератор при КАЖДОМ его дёргании ? я думкал, что достаточно при коннекте, 1 раз то бишь.

ЗЫ. Да, и сохраню-ка здесь новую версию батника. Так оно надёжнее будет, чем рыться затем по диску :-)
perfins_parall.bat
Код: 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.
@echo off
setlocal enabledelayedexpansion enableextensions
set n_max=1000000
set r_max=1000
set rp=)
set doins=no
set diftab=no
set usegen=no
set run=fb25
if .%1.==.. set /a n=10
for /l %%x in (1, 1, %n%) do (
  set /a c=100+%%x
  set sql=tmpins!c:~1,2!.tmp
  echo !sql!
  del !sql! 2>nul
  echo set echo on;                  >>!sql!
  echo show version;                 >>!sql!
  echo show database;                >>!sql!
  echo show sequence;                >>!sql!
  if /i .%doins%.==.yes. (
    echo show table;                >>!sql!
    echo show index;                >>!sql!
    echo set echo off;                  >>!sql!
    echo set list on;     >>!sql! 
    echo select current_connection attach_id, current_timestamp dts_before_ins from rdb$database;     >>!sql!
    echo set list on; select * from mon$database; set list off;  >>!sql!
  )
  echo set stat on;     >>!sql! 
  echo set echo on;                  >>!sql!
  echo set term ^^;                  >>!sql!
  echo execute block as              >>!sql! 
  echo   declare n int = !n_max!;    >>!sql!
  echo   declare v int;              >>!sql!
  echo begin                         >>!sql!
  echo   while (n^>0!rp! do              >>!sql!
  if /i .%doins%.==.no. (
    echo   begin                   >>!sql!
    echo     v = gen_id( g, 1!rp!; >>!sql!
    echo     n = n-1;            >>!sql!
    echo   end                     >>!sql!
  ) else (
  if /i .%diftab%.==.yes. (
    echo     insert into t!c:~1,2!(id,x,y,z, u,v,w!rp!   >>!sql!
  ) else (
    echo     insert into t01(id,x,y,z, u,v,w!rp!   >>!sql!
  )
  if /i .%usegen%.==.yes. (
    echo     values ( gen_id(g,1!rp!, rand(!rp!*!r_max!, rand(!rp!*!r_max!, rand(!rp!*!r_max!, >>!sql!
  ) else (
    echo     values ( current_connection*!n_max! + :n, rand(!rp!*!r_max!, rand(!rp!*!r_max!, rand(!rp!*!r_max!, >>!sql!
  )
  echo              rpad( '', 20, left(uuid_to_char(gen_uuid(!rp!!rp!, 5 !rp! !rp!,   >>!sql!
  echo              rpad( '', 20, left(uuid_to_char(gen_uuid(!rp!!rp!, 5 !rp! !rp!,   >>!sql!
  echo              rpad( '', 20, left(uuid_to_char(gen_uuid(!rp!!rp!, 5 !rp! !rp!    >>!sql!
  echo            !rp!                           >>!sql!
  echo     returning :n-1 into n;             >>!sql!
  )
  echo end^^                          >>!sql!
  echo set term ;^^                   >>!sql!
  echo commit;                       >>!sql!
  echo set echo off;                 >>!sql!
  echo set stat off;                 >>!sql!
  echo select current_connection attach_id, current_timestamp dts_after_ins from rdb$database;     >>!sql!
  echo show sequence;                >>!sql!
  echo -- select count(*!rp! result_count from t01;   >>!sql!

)

for /l %%x in (1, 1, %n%) do (
  set /a c=100+%%x
  set sql=tmpins!c:~1,2!.tmp
  set log=tmpins!c:~1,2!.log
  
  @echo on
  if /i .%run%.==.fb30. (
    start perfins_aux.bat 192.168.0.220/3333:/var/db/fb30/perfins.fdb !sql! !log!
  ) else (
    start perfins_aux.bat 192.168.0.220/3252:/var/db/fb25/perfins.fdb !sql! !log!
  )
  @echo off
)
exit

...
Рейтинг: 0 / 0
03.02.2014, 01:19:13
    #38546701
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоид,

ты сам-то свои логи читал ? reads\writes смотрел ? Сравнивал ?
Там всё очевидно. Кроме причины, есс-но. С которой я буду разбираться уже позже...
...
Рейтинг: 0 / 0
03.02.2014, 01:42:25
    #38546710
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
hvladreads\writes смотрел ? Сравнивал ?
Там всё очевидно. Кроме причины, есс-но.я не читал ничего, просто вытряхнул из них elapsed time. ИМХО, дифферент в этом показателе - в 15 раз - достаточен для начала "движухи", без дальнейших показов разниц reads / writes.
...
Рейтинг: 0 / 0
03.02.2014, 06:58:17
    #38546753
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоидя думкал, что достаточно при коннекте, 1 раз то бишь.

не при коннекте, а при препарировании запроса
...
Рейтинг: 0 / 0
04.02.2014, 01:30:41
    #38547951
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Еще одно наблюдение.
Вот этот блок:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
set term ^;                  
execute block as               
  declare n int = 1000000;    
  declare v int;              
  declare s varchar(4096);              
begin                         
  while (n>0) do              
  begin                   
      select RDB$CHARACTER_SET_NAME, RDB$RELATION_ID from rdb$database 
      into s, v; 
    n = n-1;            
  end                     
end^                          
- выполняется в SuperClassic'e от 5 до 6, а в SuperServer'e - от 28 до 39 сек.
...
Рейтинг: 0 / 0
04.02.2014, 01:33:45
    #38547955
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
пардон, аттач не прилепился в предыдущем посте.
...
Рейтинг: 0 / 0
04.02.2014, 08:56:26
    #38548044
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоид,

ты ничего не напутал в конфиге для SS
твой блок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
План
PLAN (RDB$DATABASE NATURAL)

------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 4s 290ms
Current memory = 140 202 120
Max memory = 140 542 040
Memory buffers = 8 192
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 5 000 003
...
Рейтинг: 0 / 0
09.02.2014, 15:15:38
    #38554950
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Симонов Денисты ничего не напутал в конфиге для SS
...
Время выполнения запроса = 4s 290ms
...
Чтений из кэша = 5 000 003я и сам увидел тогда, что число фетчей равно 56 8пятьдесят шесть) млн.
На LI-T3.0.0.30876 воспроизвести, к сож-ю, уже не могу: всё идёт по 4.3 - 4.5 сек.
...
Рейтинг: 0 / 0
09.02.2014, 15:31:22
    #38554961
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
Таблоидя и сам увидел тогда, что число фетчей равно 56 8пятьдесят шесть) млн.
На LI-T3.0.0.30876 воспроизвести, к сож-ю, уже не могу: всё идёт по 4.3 - 4.5 сек.Потому что тогда у тебя был классик, а сейчас супер.
...
Рейтинг: 0 / 0
09.02.2014, 15:33:20
    #38554963
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5
hvladТаблоидя и сам увидел тогда, что число фетчей равно 56 8пятьдесят шесть) млн.
На LI-T3.0.0.30876 воспроизвести, к сож-ю, уже не могу: всё идёт по 4.3 - 4.5 сек.Потому что тогда у тебя был классик, а сейчас супер.CS у мну точно не было. Не люблю я его и не запускаю, там же xinet - я бы сразу увидел его в списке процессов.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Одновременный запуск DML, 10 окон: сравнение производительности FB 3.0 и FB 2.5 / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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