Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Скорость чтения блобов Firebird 4.0 / 25 сообщений из 44, страница 1 из 2
28.06.2021, 16:09
    #40080541
slavyanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Заметила, что чтение блобов на версии 4.0.0 стало существенно медленнее(может достигать x2 и больше раз). Сначала проявилось при работе с api, затем уже проверила в dbeaver.exe. 30000 записей на 3 версии вычитываются за 35 секунд, на 4 - за 1 мин 17 сек. С простыми типами ухудшения производительности не было.
...
Рейтинг: 0 / 0
28.06.2021, 16:12
    #40080542
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
покажи код.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.06.2021, 16:14
    #40080543
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
ЕМНИП это результат введения проверки прав на чтение блоба.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.06.2021, 16:14
    #40080544
slavyanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Мимопроходящий, зачем код?) чтение падает уже при запросе из утилиты работы с бд, правда в ibexpert не смотрела еще
...
Рейтинг: 0 / 0
28.06.2021, 16:16
    #40080546
slavyanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Dimitry Sibiryakov, спасибо. Возможность отменить эту проверку есть?
...
Рейтинг: 0 / 0
28.06.2021, 16:16
    #40080547
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
28.06.2021 16:14, slavyanka пишет:
> чтение падает уже при запросе из утилиты работы с бд,

засунь её по назначению!
код давай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.06.2021, 16:47
    #40080551
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Dimitry Sibiryakov
ЕМНИП это результат введения проверки прав на чтение блоба.
Ты мерял, или как обычно ?
...
Рейтинг: 0 / 0
28.06.2021, 16:51
    #40080554
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka,

я проверю конечно, но для начала ты уверен что блобы в 4.0 и 3.0 одинаковые?
...
Рейтинг: 0 / 0
28.06.2021, 16:55
    #40080556
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyankaчтение падает уже при запросе из утилиты работы с бд
ну ок. тогда нам потребуется:
- версия dbeaver, версия java, версия JayBird при коннекте к ФБ 3.0 и 4.0.
- статистика таблицы с блобами (gstat -r -t TABLENAME) в 3.0 и 4.0
- performance info (reads, fetches) запроса
- отличаются ли конфиги 3.0 и 4.0, и если да, то чем
- ну и наконец (хотя может еще и не всё) - тот же "тест" только на 4.0 с движком от 3.0 (engine12.dll).

p.s. не знаю, как там dbeaver, но компоненты типа FIBPlus, IBX, FireDAC, т.е. НЕ Java и НЕ .Net обычно не вычитывают блобы из таблиц при просто чтении таблицы, потому что это нафиг не надо. Кроме того, у Фб в записи в столбце блоба хранится его ID, и чтобы его вытащить, это делается отдельно от чтения самой записи.
Так что, "чтение блоба" вещь довольно абстрактная. Это или действительно полное вытаскивание блоба на клиента, или его обработка чем-то (функцией) на сервере.
...
Рейтинг: 0 / 0
28.06.2021, 17:00
    #40080559
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka
Возможность отменить эту проверку есть?
Иметь системную привилегию SELECT_ANY_OBJECT_IN_DATABASE
...
Рейтинг: 0 / 0
28.06.2021, 22:41
    #40080621
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka,

с чем сравнивал? 2.5 или 3.0?
Ибо с 3.0 я не увидел существенной разницы, а по сравнению с 2.5, да медленней
...
Рейтинг: 0 / 0
28.06.2021, 23:34
    #40080627
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Симонов Денис,

Однако, это походу дама, сэр.))
...
Рейтинг: 0 / 0
29.06.2021, 08:07
    #40080645
slavyanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Симонов Денис, да, блобы одинаковые, сравнивали 3.0.7 и 4.0
...
Рейтинг: 0 / 0
29.06.2021, 09:34
    #40080654
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka,

по моим замерам там нет разницы
...
Рейтинг: 0 / 0
29.06.2021, 12:10
    #40080678
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
где код?!

зы: @#$!
...
Рейтинг: 0 / 0
29.06.2021, 13:16
    #40080695
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyankaда, блобы одинаковые, сравнивали 3.0.7 и 4.0
что и как вы там сравнивали, если вы ничего из запрошенного 22341186 сказать не можете?
Зачем тогда этот топик?
...
Рейтинг: 0 / 0
29.06.2021, 13:20
    #40080696
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
29.06.2021 13:16, kdv пишет:
> Зачем тогда этот топик?

учитывая очередное пришествие Сима и Рьгла - тупой наброс на вентилятор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.06.2021, 14:46
    #40080714
slavyanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Мимопроходящий, вот код. Изначально вытаскивать из-под своих оболочек долго, буквально взяла example из firebird, прогнала на 100000 записях, итог 630 секунд на 3.0.7 и 855 на 4.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.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  

#include "example.h"
#include "ibase.h"
#include "Timer.cpp"

isc_db_handle db;
ISC_STATUS status_vector[20];
short dpb_buf_len = 20;
char dpb_buf[] = {
                                isc_dpb_version1,                //версия буфера   
                                isc_dpb_user_name,                //начинается кластер параметра имя пользователя  
                                6,                                 //длина этого параметра 6 байт  
                                'S','Y','S','D','B','A',                //строка имени пользователя  
                                isc_dpb_password,                //начинается кластер пароля пользователя  
                                9,                                 //длина его 9 байт  
                                'm','a','s','t','e','r','k','e','y'        //сам пароль  
};

#define COUNTRYLEN 15
#define CODELEN    5

const char* sel_str = "SELECT FIRST_NAME, PHOTO FROM CH";

/* Blob parameter buffer. */
const char bpb[9] = {1, 2, 2, -4, -1, 1, 2, 1, 0};

int setenv(const char* name, const char* value, int overwrite)
{
    int errcode = 0;
    if (!overwrite) {
        size_t envsize = 0;
        errcode = getenv_s(&envsize, NULL, 0, name);
        if (errcode || envsize) return errcode;
    }
    return _putenv_s(name, value);
}

int main()
{

    setenv("ISC_USER", "sysdba", 0);
    setenv("ISC_PASSWORD", "masterkey", 0);
	
    char                first_name[CODELEN + 2];
    short               flag0 = 0, flag1 = 0;
    ISC_QUAD            blob_id;
    isc_blob_handle     blob_handle = NULL;
    short               blob_seg_len;
    char                blob_segment[65400];
    isc_db_handle       DB = NULL;
    isc_tr_handle       trans = NULL;
    ISC_STATUS_ARRAY    status;
    isc_stmt_handle     stmt = NULL;
    XSQLDA* sqlda;
    long                fetch_stat;
    char                empdb[128];

	
	
    strcpy(empdb, "C:\\test3.fdb");

    if (isc_attach_database(status, 0, empdb, &DB, 0, NULL))
    {
        ERREXIT(status, 1)
    }

    if (isc_start_transaction(status, &trans, 1, &DB, 0, NULL))
    {
        ERREXIT(status, 1)
    }

    /*
     *    Allocate and prepare the select statement.
     */

    if (isc_dsql_allocate_statement(status, &DB, &stmt))
    {
        ERREXIT(status, 1)
    }

    sqlda = (XSQLDA*)malloc(XSQLDA_LENGTH(2));
    sqlda->sqln = 4;
    sqlda->version = 1;

    if (isc_dsql_prepare(status, &trans, &stmt, 0, sel_str, 1, sqlda))
    {
        ERREXIT(status, 1)
    }

    sqlda->sqlvar[0].sqldata = (char*)first_name;
    sqlda->sqlvar[0].sqltype = SQL_TEXT + 1;
    sqlda->sqlvar[0].sqlind = &flag0;

    sqlda->sqlvar[1].sqldata = (char*)&blob_id;
    sqlda->sqlvar[1].sqltype = SQL_BLOB + 1;
    sqlda->sqlvar[1].sqlind = &flag1;

    if (isc_dsql_execute(status, &trans, &stmt, 1, NULL))
    {
        ERREXIT(status, 1)
    }

    /*
     *  Display job descriptions.
     */

    Timer timer;
    timer.start();

    while ((fetch_stat = isc_dsql_fetch(status, &stmt, 1, sqlda)) == 0)
    {
        printf("\nFirst Name: %5s\n", first_name);

        /* Open the blob with the fetched blob_id. */
        if (isc_open_blob2(status, &DB, &trans, &blob_handle, &blob_id, 0, NULL))
        {
            ERREXIT(status, 1)
        }

        /* Get blob segments and their lengths and print each segment. */
        while (isc_get_segment(status, &blob_handle,
            (unsigned short*)&blob_seg_len, sizeof(blob_segment),
            blob_segment) == 0)
            printf("  %*.*s", blob_seg_len, blob_seg_len, blob_segment);

        /* Close the blob.  */
        if (status[1] == isc_segstr_eof)
        {
            if (isc_close_blob(status, &blob_handle))
            {
                ERREXIT(status, 1)
            }
        }
        else
            isc_print_status(status);

        printf("\n");
    }

    timer.stop();

    std::cout << timer.elapsedMilliseconds();

    //std::cout << timer.getCurrDelta();

    if (fetch_stat != 100L)
        isc_print_status(status);

    if (isc_dsql_free_statement(status, &stmt, DSQL_drop))
    {
        ERREXIT(status, 1)
    }

    if (isc_commit_transaction(status, &trans))
    {
        ERREXIT(status, 1)
    }

    if (isc_detach_database(status, &DB))
    {
        ERREXIT(status, 1)
    }

    free(sqlda);

    return 0;
}
...
Рейтинг: 0 / 0
29.06.2021, 14:59
    #40080720
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka,

ну, прекрасно, я считаю. Особено вот это
Код: plaintext
1.
    setenv("ISC_USER", "sysdba", 0);
    setenv("ISC_PASSWORD", "masterkey", 0);

метаданных нет, статистики нет, ничего нет. Только какой-то код. Я устал задавать вопросы.
Понятно пока только одно - вы не имеете никакого понятия что такое "тестирование".
...
Рейтинг: 0 / 0
29.06.2021, 15:37
    #40080739
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka
Мимопроходящий, вот код. Изначально вытаскивать из-под своих оболочек долго, буквально взяла example из firebird, прогнала на 100000 записях, итог 630 секунд на 3.0.7 и 855 на 4.0

Код: plaintext
1.
2.
3.
4.
5.
/* Blob parameter buffer. */
const char bpb[9] = {1, 2, 2, -4, -1, 1, 2, 1, 0};
. . .
/* Open the blob with the fetched blob_id. */
if (isc_open_blob2(status, &DB, &trans, &blob_handle, &blob_id, 0, NULL))

ахуительно! восхитительно!

не надо нам тут лохматить бабушку! ©
...
Рейтинг: 0 / 0
29.06.2021, 15:52
    #40080741
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Мимопроходящий,

это фильтр, он тут нафиг не нужен
http://docwiki.embarcadero.com/InterBase/2020/en/Reading_and_Processing_the_Blob_Data

Код: plaintext
1.
2.
3.
4.
5.
isc_open_blob2( status_vector, &db_handle, &trans,
&blob_handle, /* set by this function to refer to the Blob */
&blob_id, /* Blob ID put into out_sqlda by isc_dsql_fetch() */
0, /* BPB length = 0; no filter will be used */
NULL ); /* NULL BPB, since no filter will be used */
...
Рейтинг: 0 / 0
29.06.2021, 15:56
    #40080743
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
kdv, ты не понял.
человек нам впаривает код с потолка.
я не просто так оставил 2 верхних строчки.
...
Рейтинг: 0 / 0
29.06.2021, 16:00
    #40080746
slavyanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Мимопроходящий,

это код из примеров firebird, да, убрала фильтр в параметрах, простите уж, что оставила строчку с объявлением. Я считала, что как раз код из примеров - самое то, чтобы на нем проверять базовые функции.
...
Рейтинг: 0 / 0
29.06.2021, 16:49
    #40080754
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
Dimitry Sibiryakov

ЕМНИП это результат введения проверки прав на чтение блоба.


в тройку эта проверка тоже портирована, так что дело не в ней
...
Рейтинг: 0 / 0
29.06.2021, 16:51
    #40080755
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость чтения блобов Firebird 4.0
slavyanka,

какие-то данные будут? 22341186
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Скорость чтения блобов Firebird 4.0 / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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