Вести с полей
Привет всем.
Вот так вот закопаешься в рутине и перестаешь осознавать — «что происходит и куда девается время?». Так что, хотя бы для себя лично, надо обозначить текущее состояние дел 🙂
1. Текущие триалы IBProvider-a уже поддерживают подключение к базам данных FB через собственного клиента с указанием версии IP-протокола в адресе базы данных: «inet4://» и «inet6://».
2. Медленно и печально перетряхиваю библиотеку libtommath, которую затащили в FB3 для использования SRP-аутентификации. Автор говорит — в 19 лет её накатал. Впечатляет, но для промышленного использования не пригодна.
3. Пошла шестая неделя большого тестирования — оно было запущено утром 17 апреля. Участники:
- Firebird 2.5.6.26993 x64, SuperClassic, vc14 (полная оптимизация), модифицированный
- IBProvider 3.29.0.20837 x64
Подключение: localhost, собственный клиент IBProvider-a для Firebird. Тесты выполняются в 4-е потока.
Точка предыдущего отказа еще не пройдена — количество тестов «немного» увеличилось. Пока полет нормальный. Но деградация производительности сервера уже на лице.
Пример пары тестов (вставка/удаление записей в одной транзакции), идентичных с точки зрения сервера:
Было:
[THR:005988] [05.05.2016 02:56:02] * START TEST [charsets.txt_params.enable_defer.user_trans.unicode.TBL_CS__UTF8.VARCHAR_ARRAY__32.cn_NONE.user_UTF8.chars_UTF8.param_adVarBinary_Array.bind_iunknown_array__std_ss.small.array_type_0] [THR:005988] [05.05.2016 02:56:02] * [THR:005988] [05.05.2016 02:56:02] * PREPARE [THR:005988] [05.05.2016 02:56:02] * RUN [THR:005988] [05.05.2016 02:56:02] [test] RelationName :TBL_CS__UTF8 [THR:005988] [05.05.2016 02:56:02] [test] RelationField :VARCHAR_ARRAY__32 [THR:005988] [05.05.2016 02:56:02] [test] UnicodeMode :true [THR:005988] [05.05.2016 02:56:02] [test] EnableDeferred :true [THR:005988] [05.05.2016 02:56:02] [test] AutoCommit :false [THR:005988] [05.05.2016 02:56:02] [test] CnCharset :NONE [THR:005988] [05.05.2016 02:56:02] [test] UserCharset :UTF8 [THR:005988] [05.05.2016 02:56:02] [test] InParamType :adArray+adVarBinary [THR:005988] [05.05.2016 02:56:02] [test] InParamBindType :DBTYPE_IUNKNOWN | DBTYPE_ARRAY [THR:005988] [05.05.2016 02:56:02] [test] OutParamType :adArray+adVarBinary [THR:005988] [05.05.2016 02:56:02] [test] OutParamBindType:DBTYPE_IUNKNOWN | DBTYPE_ARRAY [THR:005988] [05.05.2016 02:56:02] [test] Prop_ArrayType :0 [THR:005988] [05.05.2016 02:56:02] [test] Create connection... [THR:005988] [05.05.2016 02:56:02] [test] create pooled data source... [THR:005988] [05.05.2016 02:56:02] [test] set_init_prop: [array_type]=0 [THR:005988] [05.05.2016 02:56:02] [test] set_init_prop: [auto_commit]=false [THR:005988] [05.05.2016 02:56:02] [test] set_init_prop: [ctype]=NONE [THR:005988] [05.05.2016 02:56:02] [test] set_init_prop: [ctype_user]=UTF8 [THR:005988] [05.05.2016 02:56:02] [test] set_init_prop: [deferred_out_param]=3 [THR:005988] [05.05.2016 02:56:02] [test] set_init_prop: [unicode_mode]=true [THR:005988] [05.05.2016 02:56:02] [test] connect to database ...OK [THR:005988] [05.05.2016 02:56:02] [test] Create session... [THR:005988] [05.05.2016 02:56:02] [test] START TRANSACTION ... [THR:005988] [05.05.2016 02:56:02] [test] Create commands... [THR:005988] [05.05.2016 02:56:02] [test] Prepare Command: "insert into TBL_CS__UTF8 (VARCHAR_ARRAY__32) values (?) returning VARCHAR_ARRAY__32,test_id" [THR:005988] [05.05.2016 02:56:02] [test] cmd.describe_params(param) [THR:005988] [05.05.2016 02:56:02] [test] cmd.set_param_info(param) [THR:005988] [05.05.2016 02:56:02] [test] Create command ... [THR:005988] [05.05.2016 02:56:02] [test] Prepare Command: "delete from TBL_CS__UTF8 where test_id=?" [THR:005988] [05.05.2016 02:56:02] [test] cmd.describe_params(param) [THR:005988] [05.05.2016 03:28:02] [test] Total pass number:524297 [THR:005988] [05.05.2016 03:28:02] [test] COMMIT TRANSACTION [RETAINING=false]... [THR:005988] [05.05.2016 03:28:02] * [THR:005988] [05.05.2016 03:28:02] * REAL TIME:19203220000 [00:32:00.3220000] [THR:005988] [05.05.2016 03:28:02] * USER TIME:2506624068 [00:04:10.6624068] [THR:005988] [05.05.2016 03:28:02] * KERNEL TIME:1080618927 [00:01:48.0618927] [THR:005988] [05.05.2016 03:28:02] * TOTAL TIME:3587242995 [00:05:58.7242995] [THR:005988] [05.05.2016 03:28:02] * [THR:005988] [05.05.2016 03:28:02] * STOP TEST [charsets.txt_params.enable_defer.user_trans.unicode.TBL_CS__UTF8.VARCHAR_ARRAY__32.cn_NONE.user_UTF8.chars_UTF8.param_adVarBinary_Array.bind_iunknown_array__std_ss.small.array_type_0]
Стало:
[THR:005980] [23.05.2016 06:06:10] * START TEST [charsets.txt_params.disable_defer.user_trans.unicode.TBL_CS__UTF8.VARCHAR_ARRAY__32.cn_NONE.user_UTF8.chars_UTF8.param_adVarBinary_Array.bind_iunknown_array__std_ss.small.array_type_0] [THR:005980] [23.05.2016 06:06:10] * [THR:005980] [23.05.2016 06:06:10] * PREPARE [THR:005980] [23.05.2016 06:06:10] * RUN [THR:005980] [23.05.2016 06:06:10] [test] RelationName :TBL_CS__UTF8 [THR:005980] [23.05.2016 06:06:10] [test] RelationField :VARCHAR_ARRAY__32 [THR:005980] [23.05.2016 06:06:10] [test] UnicodeMode :true [THR:005980] [23.05.2016 06:06:10] [test] EnableDeferred :false [THR:005980] [23.05.2016 06:06:10] [test] AutoCommit :false [THR:005980] [23.05.2016 06:06:10] [test] CnCharset :NONE [THR:005980] [23.05.2016 06:06:10] [test] UserCharset :UTF8 [THR:005980] [23.05.2016 06:06:10] [test] InParamType :adArray+adVarBinary [THR:005980] [23.05.2016 06:06:10] [test] InParamBindType :DBTYPE_IUNKNOWN | DBTYPE_ARRAY [THR:005980] [23.05.2016 06:06:10] [test] OutParamType :adArray+adVarBinary [THR:005980] [23.05.2016 06:06:10] [test] OutParamBindType:DBTYPE_IUNKNOWN | DBTYPE_ARRAY [THR:005980] [23.05.2016 06:06:10] [test] Prop_ArrayType :0 [THR:005980] [23.05.2016 06:06:10] [test] Create connection... [THR:005980] [23.05.2016 06:06:10] [test] create pooled data source... [THR:005980] [23.05.2016 06:06:10] [test] set_init_prop: [array_type]=0 [THR:005980] [23.05.2016 06:06:10] [test] set_init_prop: [auto_commit]=false [THR:005980] [23.05.2016 06:06:10] [test] set_init_prop: [ctype]=NONE [THR:005980] [23.05.2016 06:06:10] [test] set_init_prop: [ctype_user]=UTF8 [THR:005980] [23.05.2016 06:06:10] [test] set_init_prop: [deferred_out_param]=0 [THR:005980] [23.05.2016 06:06:10] [test] set_init_prop: [unicode_mode]=true [THR:005980] [23.05.2016 06:06:10] [test] connect to database ...OK [THR:005980] [23.05.2016 06:06:10] [test] Create session... [THR:005980] [23.05.2016 06:06:10] [test] START TRANSACTION ... [THR:005980] [23.05.2016 06:06:10] [test] Create commands... [THR:005980] [23.05.2016 06:06:10] [test] Prepare Command: "insert into TBL_CS__UTF8 (VARCHAR_ARRAY__32) values (?) returning VARCHAR_ARRAY__32,test_id" [THR:005980] [23.05.2016 06:06:10] [test] cmd.describe_params(param) [THR:005980] [23.05.2016 06:06:10] [test] cmd.set_param_info(param) [THR:005980] [23.05.2016 06:06:10] [test] Create command ... [THR:005980] [23.05.2016 06:06:10] [test] Prepare Command: "delete from TBL_CS__UTF8 where test_id=?" [THR:005980] [23.05.2016 06:06:11] [test] cmd.describe_params(param) [THR:005980] [23.05.2016 07:13:22] [test] Total pass number:524297 [THR:005980] [23.05.2016 07:13:22] [test] COMMIT TRANSACTION [RETAINING=false]... [THR:005980] [23.05.2016 07:13:22] * [THR:005980] [23.05.2016 07:13:22] * REAL TIME:40327720000 [01:07:12.7720000] [THR:005980] [23.05.2016 07:13:22] * USER TIME:2285570651 [00:03:48.5570651] [THR:005980] [23.05.2016 07:13:22] * KERNEL TIME:966114193 [00:01:36.6114193] [THR:005980] [23.05.2016 07:13:22] * TOTAL TIME:3251684844 [00:05:25.1684844]
База опухла до 1TB.
Текущая статистика выглядит так:
Database "d:\Database\IBP_TEST_FB25_D3_2.GDB" Database header page information: Flags 0 Checksum 12345 Generation 42630329 Page size 8192 ODS version 11.2 Oldest transaction 42477575 Oldest active 42477576 Oldest snapshot 42477572 Next transaction 42477583 Bumped transaction 1 Sequence number 0 Next attachment ID 137038 Implementation ID 26 Shadow count 0 Page buffers 0 Next header page 0 Database dialect 3 Creation date Apr 16, 2016 21:08:36 Attributes Variable header data: *END*