powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Импортозамещение - кто хочет опубликоваться в PCMagazine?
19 сообщений из 69, страница 3 из 3
Импортозамещение - кто хочет опубликоваться в 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
19 сообщений из 69, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Импортозамещение - кто хочет опубликоваться в PCMagazine?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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