powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Импортозамещение - кто хочет опубликоваться в PCMagazine?
69 сообщений из 69, показаны все 3 страниц
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39219597
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

PCMagazine (а точнее, ИТ-журналист Олег Лебедев) ведет "хроники импортозамещения". Ну модно это :)

С ним достигнута принципиальная договоренность о размещении коротких рассказов о продуктах, использующих Firebird, у них на сайте.

Если вы что-то делаете на Firebird, и это внедрено в России, то вперед - бесплатная реклама обеспечена. Причем, из-за горячести темы, такие материалы очень хорошо тиражируют.

Присылайте мне на ak@ibase.ru 2-3 абзаца - первый абзац что делает софтина, второй где внедена, и третий, почему выбрали/нравится Firebird. Плюс скриншот (посимпатичнее), и фото автора (желательно).



With best regards,
Alexey Kovyazin
www.ibsurgeon.com
www.ibase.ru/techsupp.htm
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39223532
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько человек прислали, а остальные, я так понимаю, отбиваются ссаными тряпками от клиентов, чтобы их поменьше было и вообще чтоб отстали? :)
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39223535
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненене.... Я не отказываюсь.
Я шефу передал инфу. Постараюсь форсировать или сам накропаю.
А сроки-то какие?!
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39223631
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kovyazin,

Зачем ругаешься, насяльника?

Будет тебе абзац.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39223722
Фотография aleksandr-pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kovyazin,

Так же постараюсь написать в ближайшее время
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39223742
dedRasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что слово животворящее делает!
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39223956
Rustam Rustamov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, а есть ли опыт миграции на Firebird прикладных решений с Oracle или MS SQL Server. Потенциальные импортозаместители именно такой опыт ждут.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39226642
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...и тут по рядам пробежал шёпоток "Fyracle, Fyracle, ..."
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227851
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

На сайте PCMagazine выложили первый материал о решении, использующем Firebird - smeta.ru
Прочитать можно здесь
http://ru.pcmag.com/alternativy/20140/feature/chto-nam-stoit-dom-postroit-otechestvennyi-soft-i

Говорят, маловато текста про Firebird, почему выбрали. Будем исправляться :)

Остальные, кто прислал материалы, пока в очереди. Кое у кого скринов нормальных нет, то вообще нет, то с текстом проблемы.

Но если еще кто-то желает - присылайте, это уникальный шанс засветиться, формат понятен, влюсы в карму и Firebird, и вашим продуктам.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227856
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kovyazinвлюсы в карму и Firebird, и вашим продуктам.
А вот смотрю я, например, на S-Market и не уверен как это поделие на карме отразится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227862
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА вот смотрю я, например, на S-Market и не уверен как это поделие на карме отразится.

За что Вы его так, если не секрет? Знакомы с изделием?
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.BorzovЗа что Вы его так, если не секрет?
Например, за разовый апдейт шести миллионов записей зараз. И это плановая, ежедневная
операция. Тот, что фишку сечёт, подумает "Оракул это бы уже положило насмерть", а чайник
завопит "тормозит ваша птица".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227883
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНапример, за разовый апдейт шести миллионов записей зараз. И это плановая, ежедневная
операция.


Занафига они так с базой-то? Это ж жуткая ж...
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227899
A-rioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

наверное проектировали программу пользуясь книжными шаблонами...

...разработанными для блокировочников.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39227900
A-rioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov"Оракул это бы уже положило насмерть"

чёй-то как-то не верится.

Конечно, "роллбэк сгемент для маленькой, лдля маленькой такой транзакции"...
Но все же Оракл - это Оракл, БД для гигантских объёмов данных, так что вряд ли она не в силах прожевать 6М строк

Ну мoжет быть попросит %temp% на отдельный диск вынести :-)
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228005
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема насчет апдейта интересная. :)
У кого Оракл под рукой, проверьте пожалуйста на таблице ID, varchar(80), date, varchar(2000), с индексами по ID, varchar(80), date, таблица 100 млн записей (сгенерить надо), пропадейтить 10 миллионов.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228368
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KovyazinТема насчет апдейта интересная. :)
У кого Оракл под рукой, проверьте пожалуйста на таблице ID, varchar(80), date, varchar(2000), с индексами по ID, varchar(80), date, таблица 100 млн записей (сгенерить надо), пропадейтить 10 миллионов.

sql
Код: 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.
create table upd_tst  (
  id varchar2(80) primary key using index
, data varchar2(2000)
) nologging noparallel
;

--truncate table upd_tst;
--drop index upd_tst_i2;


declare i number := 1;
        dts date;
begin
  dts := sysdate;
  while i <= 2
  loop
    insert /*+ append */into upd_tst ( id, data )
      with one_mil as ( 
         SELECT rownum as rn FROM dual
           CONNECT BY level <= 10000000 )
      select rn + i*10000000
           , to_char(rn)||'sfl;ajs;fa'||to_char(rn)||'gsdgnsdlhigwp'||to_char(rn)
        from one_mil;
    i := i+1;
    commit;
  end loop;
  commit;
  dbms_output.put_line(to_char(sysdate-dts));
end;



Код: 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.
declare i number := 1;
        j number := 0;
        dts date;
begin
  dts := sysdate;
  while i <= 6 * 1000 * 1000
  loop
    i := i+1;
    j := 10000000 + 55555 + i * 3;
    update upd_tst u
      set u.data = 'xa'||to_char(j)||'sl;ajs;fa'||to_char(j)||'gsdgnsdlhigw'||to_char(j)
      where u.id = to_char(j);
  end loop;
  commit;
  dbms_output.put_line(to_char(sysdate-dts));
end;

select --+ parallel(8)
  decode ( substr(t.data,1,2), 'xa', 'xxx', substr(t.data,1,1) ) as type
  , count(1) 
  
  from upd_tst t
  group by    decode ( substr(t.data,1,2), 'xa', 'xxx', substr(t.data,1,1) ) 

>>
4	1481479
8	1796299
5	1481486
6	1481479
9	1814813
s	18520
7	1481479
2	1481486
3	1481479
1	1481480
xxx	6000000


-- with index on data = 445sec, 6 mil updated



В общем весьма быстро ( 445 sec ), правда набор в 20 мил. ограничил.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228610
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

мне кажется, что Alexey Kovyazin имел ввиду несколько другую структуру таблицы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table UPD_TST (
  ID      integer not null,
  STR80   varchar(80) not null,
  FDATE   date not null,
  STR2000 varchar(2000)
);

alter table UPD_TST
  add constraint PK_UPD_TST
      primary key  ( ID, STR80, FDATE );



И апдейт был не 10, а 6 миллионов записей
Код: plsql
1.
while i <= 6 * 1000 * 1000
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228760
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и на Firebird то же самое и на том же железе сделайте пожалуйста.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228786
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlexey Kovyazinвлюсы в карму и Firebird, и вашим продуктам.
А вот смотрю я, например, на S-Market и не уверен как это поделие на карме отразится.

Дима,ну за что ты его так,а? S-Market меня уже сколько лет кормит, поит, а ты его так...
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228944
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Gallemar!
You wrote on 4 мая 2016 г. 11:43:56:

Gallemar> Дима,ну за что ты его так,а? S-Market меня уже сколько лет кормит, поит, а ты его так...
а не был бы он такой кривой, с чего бы ты имел тогда свой кусок масла на кусок бутерброда?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39228997
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийHello, Gallemar!
You wrote on 4 мая 2016 г. 11:43:56:

Gallemar> Дима,ну за что ты его так,а? S-Market меня уже сколько лет кормит, поит, а ты его так...
а не был бы он такой кривой, с чего бы ты имел тогда свой кусок масла на кусок бутерброда?


Я кусок хлеба имею не с разработки,а с сопровождения и внедрения. Бизнес-логику меняю в базе, да бывает, ну формы отчетные.
А разработчики отдельно от меня.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229217
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Gallemar!
You wrote on 4 мая 2016 г. 15:43:11:

Gallemar> Я кусок хлеба имею не с разработки,а с сопровожденияоб это и речь

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229304
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KovyazinНу и на Firebird то же самое и на том же железе сделайте пожалуйста.

Oracle нету, сравнил Firebird 2.5.5 и PostgreSQL 9.4

Создание таблицы
Код: plsql
1.
2.
3.
4.
5.
6.
create table TEST (
    ID        integer not null,
    STR_80    varchar(80) not null,
    DAT       date not null,
    STR_2000  varchar(2000)
);



Заполнение таблицы

FB - 19 мин 19 сек
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
execute block
as
  declare variable ID integer;
begin
  ID = 0;
  while ( ID < 100000000 ) do
  begin
    ID = :ID + 1;
    insert into TEST (
        ID,
        STR_80,
        DAT,
        STR_2000 )
    values ( :ID,
             'STR_80( ' || lpad( :ID, 9, '0' ) || ' )',
             current_date,
             'STR_2000( ' || current_date || ' ) - STR_80( ' || lpad( :ID, 9, '0' ) || ' )' );
  end
end;



PG - 8 мин 12 сек
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DO
$$DECLARE 
  ID integer;
BEGIN
  ID = 0;
  WHILE ( ID < 100000000 ) LOOP
    ID = ID + 1;
    insert into TEST (
        ID,
        STR_80,
        DAT,
        STR_2000 )
    values (
        ID,
        'STR_80( ' || lpad( cast( ID as varchar(9) ), 9, '0' ) || ' )',
        current_date,
        'STR_2000( ' || current_date || ' ) - STR_80( ' || lpad( cast( ID as varchar(9) ), 9, '0' ) || ' )' );
  END LOOP;
END$$;



Создание индекса
Код: plsql
1.
2.
3.
4.
5.
-- FB - 6 мин 38 сек
-- PG - 2 мин 51 сек
alter table TEST
  add constraint PK_TEST
      primary key (ID,STR_80,DAT);



Несколько селектов
Код: plsql
1.
2.
3.
4.
5.
-- FB - 7.72 сек
-- PG - 2.42 сек
select count(*)
  from TEST
 where ID between 1 and 10000000;



Код: plsql
1.
2.
3.
4.
5.
-- FB - 7.69 сек
-- PG - 2.11 сек
select count(*)
  from TEST
 where ID between 45000001 and 55000000;



Код: plsql
1.
2.
3.
4.
5.
-- FB - 7.67 сек
-- PG - 2.45 сек
select count(*)
  from TEST
 where ID between 99000001 and 100000000;



order by + полный фетч

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- FB - 27.94 сек
select first(100000) skip(20000000) *
  from TEST
 where ID > 0
 order by ID, STR_80, DAT;

-- PG - 3.53 сек
select *
  from TEST
 where ID > 0
 order by ID, STR_80, DAT
limit(100000) offset(20000000);



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- FB - 26.18 сек
select first(100000) skip(20000000) *
  from TEST
 where ID > 30000000
 order by ID, STR_80, DAT;

-- PG - 32.14 сек
select *
  from TEST
 where ID > 30000000
 order by ID, STR_80, DAT
limit(100000) offset(20000000);



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- FB - 25.26 сек
select first(100000) skip(20000000) *
  from TEST
 where ID > 79000000
 order by ID, STR_80, DAT;

-- PG - 13.76 сек
select *
  from TEST
 where ID > 79000000
 order by ID, STR_80, DAT
limit(100000) offset(20000000);


Непонятно, почему для PG такой разброс: 3.53 - 32.14 - 13.76


update
Код: plsql
1.
2.
3.
4.
5.
-- FB - 2 мин 43 сек
-- PG - 3 мин 53 сек
update TEST
   set STR_2000 = STR_2000 || STR_2000
 where ID between 45000001 and 55000000;



P.S. Компьютер один и тот же, диск один и тот же, оба сервера 32-х битные.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229313
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ох уж эти сравнения. Изменённые параметры конфига FB в студию. Если все параметры конфига в дефолте, то тест сразу на свалку.
Попробуй на 3.0
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229333
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисох уж эти сравнения.
Ну раз такой оффтоп:
Вообще хорошего теста не хватает.
Я лично для себя гоняю периодически тесты MSSQL vs FB vs Pg.
По факту массовые заливки в Pg быстрее. На дефолтных настройках. В FB подкручена память сортировки и кеш.
Время создания толстых индексов сравнимое (3 поля и более, записей 100К .. 1M).
А вот интересное начинается если Update начать гонять при наличии уже построенных индексов. Вот тут FB часто начинает обгонять. Причём раза в два, если правильно помню. Начинаем мучать Pg: нелогируемая таблица, заполнение страниц уменьшаем. Начинает ускоряться, но всё равно FB по дефолту резвее бегает. К сожалению я не спец в Pg и не могу адекватно его тюнить. Так что нужен спец, крайне желательно из обоих миров.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229345
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисох уж эти сравнения.чем богаты...

Если все параметры конфига в дефолте, то тест сразу на свалку.на свалку...

Попробуй на 3.0лениво...
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229353
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovЕсли все параметры конфига в дефолте, то тест сразу на свалку.на свалку...


параметра по умолчанию в FB откровенно говоря отстой рассчитаны на совсем маленькие БД.
Правда говорят что в PG тоже. Но какие выставлены лучше хз

Ты кстати не сказал в какой архитектуре пробовал.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229379
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТы кстати не сказал в какой архитектуре пробовал.

Ooops... classic server
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39229509
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, Классик и 2.5 оригинально конечно использовать, но все таки лучше взять 3.0 SuperServer с конфигом с
http://ib-aid.com/en/optimized-firebird-configuration/
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231270
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

По условию задачи разве не update построчно с коммитом транзакции потом? На том железе где тестил update одним запросом был бы в несколько секунд. Я тестировал именно на то как поведёт себя оракл, при издевательствах над индексами.
6 миллионов потому что где-то в другом месте запомнилась эта цифра ( в Пятнице вроде)
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231287
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все параметры конфига в дефолте, то тест сразу на свалку.

сразу видно болтуна
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231530
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пинать. Всесторонние тесты нужны только для ориентира. И выявления узких мест. Желательно делать это на одинаковом железе. У нас сейчас будет не очень объективная картина, но есть моменты которые меня интересуют.

Объясняю почему. Когда то моя база создавалась за 30 секунд и потом произошло резкое увеличение времени создания. Сейчас создание на SSD 50 секунд. Мне было лень тогда искать причину этого, ведь у клиентов тормозов не наблюдалось. Теперь поздно.

Как только перехожу на новую версию старую не использую вообще.
Firebird-3.0.1.32510-0_Win32
Но пришлось сделать и для Fb 2.5.6.26979 т.к. результат сильно отличался Polesov

SSD чтение и запись 41Мбайт/сек было в "Монитор ресурсом"
База распухла в обоих вариантах с 1700Мб до 16Гб с индексом до 20Гб

Тройка отстает от 2.5, но надо понимать в 3-ке упор на множественные подключения и это плата за быстродействие в 1-ом коннекте. Об этом наверно и разработчики скажут.

Интересно при создании базы у меня 1.5 раза создалось быстрей чем у Polesov. НО по выборкам расхождения жуткие с Polesov. У меня зекало у Polesov наверно последовательный РАЙД.
update быстрый.

Polesov
Заполнение таблицы

FB - 19 мин 19 сек
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
execute block
as
  declare variable ID integer;
begin
  ID = 0;
  while ( ID < 100000000 ) do
  begin
    ID = :ID + 1;
    insert into TEST (
        ID,
        STR_80,
        DAT,
        STR_2000 )
    values ( :ID,
             'STR_80( ' || lpad( :ID, 9, '0' ) || ' )',
             current_date,
             'STR_2000( ' || current_date || ' ) - STR_80( ' || lpad( :ID, 9, '0' ) || ' )' );
  end
end;




Fb 3.0.1.32510
Время подготовки "00:00:00.003", выполнения "00:12:37.943"
Plan:
MaxMemory: 383611736, CurrentMemory: 329672320, NumBuffers: 38192
Cache fetches 311564521, reads from disk 16, writes to disk 1854011
"RDB$PAGES" backout 0, delete 0, expunge 0, insert 1156, purge 0, read_idx 0, read_seq 0, update 0
"TEST" backout 0, delete 0, expunge 0, insert 100000000, purge 0, read_idx 0, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.003", выполнения "00:12:14.375"
Plan:
MaxMemory: 372039676, CurrentMemory: 323576656, NumBuffers: 38192
Cache fetches 315100295, reads from disk 0, writes to disk 1851609
"RDB$PAGES" backout 0, delete 0, expunge 0, insert 982, purge 0, read_idx 0, read_seq 0, update 0
"TEST" backout 0, delete 0, expunge 0, insert 100000000, purge 0, read_idx 0, read_seq 0, update 0

Так сравнил разницу между системами.
19*60+19=1159
12*60+37=757
1159/757=~1.5 раза мой комп выполнил это быстрей. НО это может зависит от настроек конфига которые просили в студию
У меня они такие
Код: sql
1.
2.
3.
4.
5.
6.
DefaultDbCachePages = 38192
FileSystemCacheThreshold = 264K
GCPolicy = background
RemoteAuxPort  = 3051
ServerMode = Classic
TempDirectories = f:\



PG - 8 мин 12 сек
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DO
$$DECLARE 
  ID integer;
BEGIN
  ID = 0;
  WHILE ( ID < 100000000 ) LOOP
    ID = ID + 1;
    insert into TEST (
        ID,
        STR_80,
        DAT,
        STR_2000 )
    values (
        ID,
        'STR_80( ' || lpad( cast( ID as varchar(9) ), 9, '0' ) || ' )',
        current_date,
        'STR_2000( ' || current_date || ' ) - STR_80( ' || lpad( cast( ID as varchar(9) ), 9, '0' ) || ' )' );
  END LOOP;
END$$;



Создание индекса
Код: plsql
1.
2.
3.
4.
5.
-- FB - 6 мин 38 сек
-- PG - 2 мин 51 сек
alter table TEST
  add constraint PK_TEST
      primary key (ID,STR_80,DAT);





Fb 3.0.1.32510
4:25 соотношение времени 1.5 раза тут все в порядке
Fb 2.5.6.26979
4:55


Несколько селектов
Код: plsql
1.
2.
3.
4.
5.
-- FB - 7.72 сек
-- PG - 2.42 сек
select count(*)
  from TEST
 where ID between 1 and 10000000;



Fb 3.0.1.32510
Время подготовки "00:00:00.237", выполнения "00:00:13.400"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 538290632, CurrentMemory: 334019936, NumBuffers: 38192
Cache fetches 20048822, reads from disk 237598, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 10000007, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.154", выполнения "00:00:10.548"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 328532544, NumBuffers: 38192
Cache fetches 20048822, reads from disk 237581, writes to disk 5
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 10000007, read_seq 0, update 0

Код: plsql
1.
2.
3.
4.
5.
-- FB - 7.69 сек
-- PG - 2.11 сек
select count(*)
  from TEST
 where ID between 45000001 and 55000000;



Fb 3.0.1.32510
Время подготовки "00:00:00.003", выполнения "00:00:10.939"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 538290632, CurrentMemory: 334019376, NumBuffers: 38192
Cache fetches 20051087, reads from disk 239821, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 10000031, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.007", выполнения "00:00:09.480"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 328532560, NumBuffers: 38192
Cache fetches 20051087, reads from disk 239804, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 10000031, read_seq 0, update 0
Код: plsql
1.
2.
3.
4.
5.
-- FB - 7.67 сек
-- PG - 2.45 сек
select count(*)
  from TEST
 where ID between 99000001 and 100000000;



Fb 3.0.1.32510
Время подготовки "00:00:00.004", выполнения "00:00:01.085"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 538290632, CurrentMemory: 329164048, NumBuffers: 38192
Cache fetches 2005107, reads from disk 23988, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 1000000, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.009", выполнения "00:00:00.988"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 324170568, NumBuffers: 38192
Cache fetches 2005107, reads from disk 23975, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 1000000, read_seq 0, update 0
order by + полный фетч

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- FB - 27.94 сек
select first(100000) skip(20000000) *
  from TEST
 where ID > 0
 order by ID, STR_80, DAT;

-- PG - 3.53 сек
select *
  from TEST
 where ID > 0
 order by ID, STR_80, DAT
limit(100000) offset(20000000);



Fb 3.0.1.32510
Время подготовки "00:00:00.009", выполнения "00:00:43.030"
Plan:PLAN (TEST ORDER PK_TEST)
MaxMemory: 538290632, CurrentMemory: 339424296, NumBuffers: 38192
Cache fetches 60102650, reads from disk 477266, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 20000996, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.005", выполнения "00:00:44.069"
Plan:PLAN (TEST ORDER PK_TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 381843796, NumBuffers: 38192
Cache fetches 60607742, reads from disk 985030, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 20000088, read_seq 0, update 0
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- FB - 26.18 сек
select first(100000) skip(20000000) *
  from TEST
 where ID > 30000000
 order by ID, STR_80, DAT;

-- PG - 32.14 сек
select *
  from TEST
 where ID > 30000000
 order by ID, STR_80, DAT
limit(100000) offset(20000000);



Fb 3.0.1.32510
Время подготовки "00:00:00.005", выполнения "00:00:54.328"
Plan:PLAN (TEST ORDER PK_TEST)
MaxMemory: 538290632, CurrentMemory: 339424312, NumBuffers: 38192
Cache fetches 60105041, reads from disk 479659, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 20000997, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.008", выполнения "00:00:45.121"
Plan:PLAN (TEST ORDER PK_TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 367308440, NumBuffers: 38192
Cache fetches 60459460, reads from disk 836750, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 20000089, read_seq 0, update 0
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- FB - 25.26 сек
select first(100000) skip(20000000) *
  from TEST
 where ID > 79000000
 order by ID, STR_80, DAT;

-- PG - 13.76 сек
select *
  from TEST
 where ID > 79000000
 order by ID, STR_80, DAT
limit(100000) offset(20000000);



Fb 3.0.1.32510
Время подготовки "00:00:00.004", выполнения "00:00:54.452"
Plan:PLAN (TEST ORDER PK_TEST)
MaxMemory: 538290632, CurrentMemory: 339424312, NumBuffers: 38192
Cache fetches 60105041, reads from disk 479659, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 20000997, read_seq 0, update 0
Fb 2.5.6.26979
Время подготовки "00:00:00.009", выполнения "00:00:43.058"
Plan:PLAN (TEST ORDER PK_TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 343564628, NumBuffers: 38192
Cache fetches 60209460, reads from disk 586750, writes to disk 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 20000089, read_seq 0, update 0
Непонятно, почему для PG такой разброс: 3.53 - 32.14 - 13.76


Вообще ничего не понимаю. Чувствую надо будет для FB2 тест проверить.
update
Код: plsql
1.
2.
3.
4.
5.
-- FB - 2 мин 43 сек
-- PG - 3 мин 53 сек
update TEST
   set STR_2000 = STR_2000 || STR_2000
 where ID between 45000001 and 55000000;



Fb 3.0.1.32510
Время подготовки "00:00:00.007", выполнения "00:02:10.892"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 538290632, CurrentMemory: 336000864, NumBuffers: 38192
Cache fetches 136096383, reads from disk 241012, writes to disk 241523
"RDB$PAGES" backout 0, delete 0, expunge 0, insert 55, purge 0, read_idx 0, read_seq 0, update 0
"RDB$RELATION_CONSTRAINTS" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 0, read_seq 1410, update 0
"RDB$INDICES" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 1640, read_seq 1696, update 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 10000031, read_seq 0, update 10000000
Fb 2.5.6.26979
Время подготовки "00:00:00.008", выполнения "00:01:53.063"
Plan:PLAN (TEST INDEX (PK_TEST))
MaxMemory: 533370408, CurrentMemory: 329754040, NumBuffers: 38192
Cache fetches 150208860, reads from disk 239826, writes to disk 241484
"RDB$PAGES" backout 0, delete 0, expunge 0, insert 47, purge 0, read_idx 0, read_seq 0, update 0
"RDB$INDICES" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 2, read_seq 0, update 0
"TEST" backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 10000031, read_seq 0, update 10000000

P.S. Компьютер один и тот же, диск один и тот же, оба сервера 32-х битные.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231605
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskЕсли все параметры конфига в дефолте, то тест сразу на свалку.

сразу видно болтуна

ага, то есть ты считаешь что 75 страниц кеша и 8M под сортировку это нормально.
А ещё и размер страницы небось 4K был.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231607
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикDefaultDbCachePages = 38192
FileSystemCacheThreshold = 264K
GCPolicy = background
RemoteAuxPort = 3051
ServerMode = Classic
TempDirectories = f:\

на классике такой огромный кеш вреден. Хотя тест тут в один поток идёт, так что никак не сказывается.
Какой ещё background на классике? Почему не супер?

TempCacheLimit не увеличивал хотя бы до гигабайта? Это должно улучшить время создания индекса и скорость сортировок
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231681
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисMaratIskпропущено...


сразу видно болтуна

ага, то есть ты считаешь что 75 страниц кеша и 8M под сортировку это нормально.
А ещё и размер страницы небось 4K был.

тест должен строиться на дефолтовых параметрах, исходя из того, что разработчик предусмотрел их как оптимальные для типичного применения

есть, разумеется, кудесники знающие все закоулки субд, но таковых немного и погоды в массе они не делают
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231688
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskСимонов Дениспропущено...


ага, то есть ты считаешь что 75 страниц кеша и 8M под сортировку это нормально.
А ещё и размер страницы небось 4K был.

тест должен строиться на дефолтовых параметрах, исходя из того, что разработчик предусмотрел их как оптимальные для типичного применения

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

А вообще, предлагаю уже заодно делать тест на 256МБ ОЗУ и позвать мускуль с оракулом. «Для себя, чисто поржать»©
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231733
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я очень дико извиняюсь

В этом месте всралась ачипятка:
Код: plsql
1.
2.
3.
select count(*)
  from TEST
 where ID between 99000001 and 100000000;



Не 99000001 , а 90000001 - count считался по 10 млн записей
Код: plsql
1.
2.
3.
select count(*)
  from TEST
where ID between 90000001 and 100000000;



Цифры приведены для 90000001
Код: plsql
1.
2.
-- FB - 7.67 сек
-- PG - 2.45 сек
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231738
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81По условию задачи разве не update построчно с коммитом транзакции потом?


Ну, смотря что понимать под массовым апдейтом, изначально уточнено не было.
Alexey Kovyazinна таблице ID, varchar(80), date, varchar(2000), с индексами по ID, varchar(80), date, таблица 100 млн записей (сгенерить надо), пропадейтить 10 миллионов.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39231824
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovNikolayV81По условию задачи разве не update построчно с коммитом транзакции потом?


Ну, смотря что понимать под массовым апдейтом, изначально уточнено не было.
Alexey Kovyazinна таблице ID, varchar(80), date, varchar(2000), с индексами по ID, varchar(80), date, таблица 100 млн записей (сгенерить надо), пропадейтить 10 миллионов.
Если не ошибаюсь где-то проскакивала тема про данное приложение и про макс. размер тела запроса в 3ке да и ещё если посмотреть на мой пример там идёт обновление именно полей входящих в индекс (что собственно для оракла и критично из-за чего в etl и стараются избегать constraint-ов , либо отключают / включают их при заливках ).
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232165
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskтест должен строиться на дефолтовых параметрах
давно известно, что много дефолтных параметров ФБ идут со времен царя гороха, и уже давно неактуальны. Даже для суперсервера размер кэша в 2000 страниц - это мизерабль.
Так что ваш выстрел про "болтуна" на самом деле вам в ногу.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232217
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81если посмотреть на мой пример там идёт обновление именно полей входящих в индексНу, я исходил из того, что менять значения полей, входящих в первичный индекс, как-то не комильфо.

А вообще, при такой постановке задачи всяк интерпретирует ее по своему.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232222
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

не комильфо вообще такой PK делать. Разве что для теста в равных условиях.

ИХМО весь хвост топика про тестирование надо бы в отдельную тему оформить
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232239
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvMaratIskтест должен строиться на дефолтовых параметрах
давно известно, что много дефолтных параметров ФБ идут со времен царя гороха, и уже давно неактуальны. Даже для суперсервера размер кэша в 2000 страниц - это мизерабль.
Так что ваш выстрел про "болтуна" на самом деле вам в ногу.

ну можно же дефолты в документации к релизу указывать
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232242
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskkdvпропущено...

давно известно, что много дефолтных параметров ФБ идут со времен царя гороха, и уже давно неактуальны. Даже для суперсервера размер кэша в 2000 страниц - это мизерабль.
Так что ваш выстрел про "болтуна" на самом деле вам в ногу.

ну можно же дефолты в документации к релизу указывать

хрен с ним с историческими слоями кода - понимаю, перелопачивать их тоска смертная
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232244
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисИХМО весь хвост топика про тестирование надо бы в отдельную тему оформить
Согласен. И не в "Сравнение СУБД", а оставить тут, потому как там он сгинет.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232252
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисне комильфо вообще такой PK делатьНу, таково было условие от Alexey Kovyazin .

Симонов ДенисИХМО весь хвост топика про тестирование надо бы в отдельную тему оформитьДа уже нет смысла, кмк (в силу некорректной постановки задачи).

Странный разброс по времени выполнения запросов с полным фетчем на PG. Видимо, надо будет в профильной спросить.

Удивило, что по результатам тестирования Евгений Болтик FB3.0 был медленнее в селектах, чем 2.5.
Он сказал, что тестировал на SSD, у меня же обычный SATA.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232263
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovСимонов Денисне комильфо вообще такой PK делатьНу, таково было условие от Alexey Kovyazin .


не уверен в этом.

Alexey KovyazinУ кого Оракл под рукой, проверьте пожалуйста на таблице ID, varchar(80), date, varchar(2000), с индексами по ID, varchar(80), date, таблица 100 млн записей (сгенерить надо), пропадейтить 10 миллионов.

подозреваю что тут не один общий индекс (PK), а по индексу на каждое поле. И это может в некоторых случаях весьма сильно изменить результат.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232265
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисPolesovпропущено...
Ну, таково было условие от Alexey Kovyazin .

не уверен в этом.

Ну, значит я не правильно понял
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232297
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovСтранный разброс по времени выполнения запросов с полным фетчем на PG.

само по себе тестирование полного фетча имеет множество нюансов.

1. Полный фетч он ещё учитывает затраты сетевого протокола
2. Вопрос как и где он проводился. Если в IBexpert и pgadmin, то надо учитывать, что там ещё неизвестно сколько вносят компоненты доступа. Плюс в IBE сам грид навороченный, отображение всех записей в нём имеет весьма существенные затраты.

PolesovУдивило, что по результатам тестирования Евгений Болтик FB3.0 был медленнее в селектах, чем 2.5.

конфиг у Болтика весьма странный. Кэш в FB 3.0 на одном потоке чуть медленней чем в 2.5.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232305
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениссамо по себе тестирование полного фетча имеет множество нюансов.
Но не на порядок же - 3.53 сек и 32.14 сек

Симонов ДенисКэш в FB 3.0 на одном потоке чуть медленней чем в 2.5.
Опять таки - в 1.5 раза это чуть?
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232456
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovСимонов Дениспропущено...

не уверен в этом.

Ну, значит я не правильно понял

Может кто знающий в чём суть вопроса нам подскажет, ваш тест на тревиальную задачу, не пугала бы она никого в таком виде (да данных немало но по сути тестирование скорости сканирования индекса, да плюс разрастание базы, возможно, неуместное).

Предлагаю попробовать то что сделано для оракла для firebird )
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232488
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По теме.
Я набросал. Объем - на листочек. Согласую с шефом - пришлю. Он грозился вечерком вынести вердикт.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39232599
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81Предлагаю попробовать то что сделано для оракла для firebird )
А как учесть, что железяки разные?
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39233117
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovNikolayV81Предлагаю попробовать то что сделано для оракла для firebird )
А как учесть, что железяки разные?

Дело на мой взгляд не в производительности как таковой было высказывание про то что оракл совсем умрёт не умер, естественно fb на данном железе не поставить, а вот тест покажет, на мой взгляд, можно ли такой подход использовать на fb или нет да и в принципе мне лично было бы интересно увидеть результат отработки на пустой базе на более менее шустром железе.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39233547
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

вот прям щас возможности нету - может быть позжее.

NikolayV81результат отработки на пустой базе на более менее шустром железе.

А что такое " отработки на пустой базе "?
И что подразумевается под " более менее шустром железе "?
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39233570
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovNikolayV81,

вот прям щас возможности нету - может быть позжее.

Это же не вопрос жизни и смерти )

PolesovNikolayV81результат отработки на пустой базе на более менее шустром железе.

А что такое " отработки на пустой базе "?
И что подразумевается под " более менее шустром железе "?

Мне было бы очень интересно 4+ ядер 2.5+ГГц 16+ оперативки sas raid (аппаратный с кэшем) + linux as os к сожалению похожего в доступе нет.
Пустой - незагруженный текущими задачами.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234232
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

Firebird 2.5.5 classic server

Создание таблицы:
Код: plsql
1.
2.
3.
4.
create table UPD_TST  (
  ID   varchar(80) not null,
  DATA varchar(2000)
);


Генерация данных (20 млн записей):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
execute block
as
  declare variable I integer;
begin
  I = 10000000;
  while ( I < 30000000 ) do
  begin
    I = :I + 1;
    insert into UPD_TST ( ID, DATA )
    values ( :I, :I || 'sfl;ajs;fa' || :I ||'gsdgnsdlhigwp' || :I );
  end
end;
-- 1 min 28.656 sec


Создание первичного ключа:
Код: plsql
1.
2.
3.
alter table UPD_TST
  add constraint PK_UPD_TST primary key ( ID );
-- 24.361 sec


Апдейт 6 млн записей:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
execute block
as
  declare variable I integer;
  declare variable J integer;
begin
  I = 0;
  J = 0;
  while ( I < 6000000 ) do
  begin
    I = :I + 1;
    J = 10000000 + 55555 + :I * 3;
    update UPD_TST
       set DATA = 'xa' || :J || 'sl;ajs;fa' || :J || 'gsdgnsdlhigw' || :J
     where ID = cast( :J as varchar(80) );
  end
end;
-- 1 min 17.531 sec


Селект:
Код: plsql
1.
2.
3.
4.
select decode ( substring( t.DATA from 1 for 2), 'xa', 'xxx', substring( t.DATA from 1 for 1 ) ) as KIND, count(1)
  from UPD_TST t
 group by decode ( substring( t.DATA from 1 for 2 ), 'xa', 'xxx', substring( t.DATA from 1 for 1 ) )
-- 6 min 47.203 sec



Компьютер (обычный воркстэйшн):
Код: powershell
1.
2.
3.
4.
CPU - Intel(R) Core(TM) i7-4790 CPU 3.60GHz ( 4 ядра, гипертрейдинг включен)
HDD - SSD 500 mb/sec
RAM - 32 GB
OS - Windows 8.1 Professional


Тест выполнялся в монопольном режиме.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234310
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

Понял свою ошибку в моём коде пропал кусок про индекс по полю data (

При тесте было 2 индекса по id и по data
Виноват.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234329
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81При тесте было 2 индекса по id и по data
Тогда в моем случае придется менять размер страницы тестовой БД (сейчас 4096 байт),
иначе индекс по полю DATA не пройдет по размеру.

Появится время - повторю тест.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234455
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

Повторил тест с page size 8192 и с индексом по полю DATA:

Код: plsql
1.
2.
create index IDX_UPD_TST_DATA on UPD_TST (DATA);
-- 3 min 10.687 sec



Апдейт с индексом увеличился по времени почти в полтора раза:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
execute block
as
  declare variable I integer;
  declare variable J integer;
begin
  I = 0;
  J = 0;
  while ( I < 6000000 ) do
  begin
    I = :I + 1;
    J = 10000000 + 55555 + :I * 3;
    update UPD_TST
       set DATA = 'xa' || :J || 'sl;ajs;fa' || :J || 'gsdgnsdlhigw' || :J
     where ID = cast( :J as varchar(80) );
  end
end;
-- 1 min 53.31 sec



Селект по времени не изменился (т.к. индексы не используются):
Код: plsql
1.
2.
3.
4.
select decode ( substring( t.DATA from 1 for 2), 'xa', 'xxx', substring( t.DATA from 1 for 1 ) ) as KIND, count(1)
  from UPD_TST t
 group by decode ( substring( t.DATA from 1 for 2 ), 'xa', 'xxx', substring( t.DATA from 1 for 1 ) )
-- 6 min 46.438 sec



P.S. Условия тестирования не менялись.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234629
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

Результат отличный, т.е. выходит что update большого количества записей не опасен для fb и операция при обновлении версии не особо затратная.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234921
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81Результат отличныйНу, это не моя заслуга :-)

NikolayV81выходит что update большого количества записей не опасен для fb и операция при обновлении версии не особо затратная.Можно и так сказать, но вот во что выльется такой апдейт при многопользовательском доступе?
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234931
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovСелект по времени не изменился (т.к. индексы не используются):

и это странно. Между update и select commit был? Если был то в select должна была быть сборка мусора, которая должна была негативно сказаться на скорости.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39234953
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисPolesovСелект по времени не изменился (т.к. индексы не используются):

и это странно. Между update и select commit был? Если был то в select должна была быть сборка мусора, которая должна была негативно сказаться на скорости.

Я имел ввиду, что время выполнения селекта не изменилось по сравнению с тестированием без индекса по полю DATA.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39240455
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39249426
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

GCPolicy = background - не убираю т.к. иногда запускаю в тесте супер, а т.к. на классик не влияет получается висит всегда
DefaultDbCachePages = 38192 - на классике сильно провисают запросы на базе более 4Гб выставили оптимальное значение методом тыка. Хотя после скольки то Гб требовалось больше, но были проблемы с блобами. Поэтому оставили пока эо значение.
Супер 3-ки не удалось запустить в работу т.к. 32 бит не дает нам возможность запустить более 3 - 4 подключений к разным базам данных т.к. боле 2Гб оперативки это придел.
А хочется еще больше, 9Гб базу поместить в память. Но тогда надо ставить 64 бит сервер, а значит и УДФ надо будет 64 бит протестировать сначала.

Вчера пришлось обновиться до Windows 10.
Сегодня выдалось глянуть конференцию и ответить.
Странно было после первого запуска и решил все перезапустить.

Т.к. тесты все равно были сделаны их выкладываю. Напоминаю ориентироваться на них сильно не советую т.к. в реальных запросах более сложные скрипты. Также мы все не все параметры используем в конфиге к примеру TempCacheLimit. Я его не использую но он дает прирост 25-30%. Под разные задачи разные параметры.
Показатели update остались на прежнем уровне. Все остальное на разъехалось.
Все расхождения на несколько секунд. Это можно пока пережить т.к. есть другие более сложные проблемы. Баги прошлых лет которые приходиться перетестить и рапортовать т.к. получить 3-ку было важней, чем их тогда править. Дальше будет проще разработчики будут оптимизировать по ходу дела и продукт будет крепчать.

Создание индекса
FB 3.0.1.3224
Если кеширование и данные на одном диске то
TempCacheLimit = default
18:10:00-18:17:26=7:26
TempCacheLimit = 364M
17:45:00-17:50:37=5:37

Если кеш и данные на разных дисках
TempCacheLimit = default
18:50:00-18:54:13=4:13
TempCacheLimit = 364M
19:12:00-19:16:12=4:12
TempCacheLimit = 640M
19:38:00-19:41:40=3:40

FB2 2.5.6.26979
Если кэш и данные на разных дисках
TempCacheLimit = 671088640
20:24:00-20:27:45=3:45

Да прирост есть, но после 640M быстрей не становится, пробовал ставить 1536M.
Но это только в этом тесте. И на это можно смотреть так для ознакомления.

Все тесты проводились с одним лишь изменением в конфиге
для FB 3.0.1.32524
TempCacheLimit = 640M
TempCacheLimit = default
для Fb 2.5.6.26979
TempCacheLimit = 671088640

select first(100000) skip(20000000) * from TEST
where ID > 0
order by ID, STR_80, DAT;
FB 3.0.1.32524
Время подготовки "00:00:00.004", выполнения "00:00:40.706"
Время подготовки "00:00:00.028", выполнения "00:00:50.507"
Fb 2.5.6.26979
Время подготовки "00:00:00.127", выполнения "00:00:47.414"

было в Fb 3.0.1.32510
Время подготовки "00:00:00.009", выполнения "00:00:43.030"
Fb 2.5.6.26979
Время подготовки "00:00:00.005", выполнения "00:00:44.069"


select first(100000) skip(20000000) * from TEST
where ID > 30000000
order by ID, STR_80, DAT;
FB 3.0.1.32524
Время подготовки "00:00:00.005", выполнения "00:00:39.055"
Время подготовки "00:00:00.018", выполнения "00:00:44.455"
Fb 2.5.6.26979
Время подготовки "00:00:00.013", выполнения "00:00:44.173"

было в Fb 3.0.1.32510
Время подготовки "00:00:00.005", выполнения "00:00:54.328"
Fb 2.5.6.26979
Время подготовки "00:00:00.008", выполнения "00:00:45.121"


select first(100000) skip(20000000) * from TEST
where ID > 79000000
order by ID, STR_80, DAT;
FB 3.0.1.32524
Время подготовки "00:00:00.006", выполнения "00:00:45.159"
Время подготовки "00:00:00.008", выполнения "00:00:43.372"
Fb 2.5.6.26979
Время подготовки "00:00:00.017", выполнения "00:00:42.217"

было в Fb 3.0.1.32510
Время подготовки "00:00:00.004", выполнения "00:00:54.452"
Fb 2.5.6.26979
Время подготовки "00:00:00.009", выполнения "00:00:43.058"


update TEST set STR_2000 = STR_2000 || STR_2000
where ID between 45000001 and 55000000;
FB 3.0.1.32524
Время подготовки "00:00:00.016", выполнения "00:02:10.409"
Fb 2.5.6.26979
Время подготовки "00:00:00.016", выполнения "00:01:53.789"

было в Fb 3.0.1.32510
Время подготовки "00:00:00.007", выполнения "00:02:10.892"
Fb 2.5.6.26979
Время подготовки "00:00:00.008", выполнения "00:01:53.063"
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39249439
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

на последний тест это изменение TempCacheLimit не может повлиять.
TempCacheLimit помогает для внешних сортировок (создание индекса, ORDER BY с планом SORT, GROUP BY с планом SORT, DISTINCT) и для HASH/MERGE JOIN.
...
Рейтинг: 0 / 0
Импортозамещение - кто хочет опубликоваться в PCMagazine?
    #39249506
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

на последний тест это изменение TempCacheLimit не может повлиять.
TempCacheLimit помогает для внешних сортировок (создание индекса, ORDER BY с планом SORT, GROUP BY с планом SORT, DISTINCT) и для HASH/MERGE JOIN.
Огромное СП за совет. Это я сразу понял. Судя по тому какие базу у меня мелкие это так не значительно. Поэтому он у меня закомментированный с моими тестовыми значениями. До этих тестов я не видел разницы в этом параметре. Я всегда обходился DefaultDbCachePages.


Черт дернул подергать эту же тестовую базу
DefaultDbCachePages = 1024
FileSystemCacheThreshold = 264K
GCPolicy = background
RemoteAuxPort = 3051
ServerMode = Classic
TempDirectories = f:\

select first(100000) skip(20000000) * from TEST
where ID > 0
order by ID, STR_80, DAT;
Время подготовки "00:00:00.020", выполнения "00:00:32.929"

DefaultDbCachePages = 38192
FileSystemCacheThreshold = 264K
GCPolicy = background
RemoteAuxPort = 3051
ServerMode = Classic
TempDirectories = f:\
TempCacheLimit = 640M
Время подготовки "00:00:00.018", выполнения "00:00:33.216"

Вот это уже фигня какая то. То 40, то 50, то 33 секунды выполняется запрос.
Такое поведение стало после коммита этого
update TEST set STR_2000 = STR_2000 || STR_2000
where ID between 45000001 and 55000000;
Складывается впечатление мусор помогает быстрей работать. Все спать, спать....
...
Рейтинг: 0 / 0
69 сообщений из 69, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Импортозамещение - кто хочет опубликоваться в PCMagazine?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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