powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор процессора для firebird
25 сообщений из 79, страница 1 из 4
Выбор процессора для firebird
    #40073178
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Встал вопрос об апгрейде компьютера для старого монструозного проекта на firebird 2.5
Сейчас проц i5-3570. Диск быстрый nvme. Памяти 16.
Проект долгие годы дорабатывался, сейчас в базе полно инфы и костылей в виде многочисленных триггеров и на некоторых выборках сильно тормозит.
Какой сейчас десктопный проц в пределах 50 тысяч рублей стоит рассматривать в плане максимальной производительности на ядро для firebird?
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073183
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
26.05.2021 15:18, velovich пишет:
> Встал вопрос об апгрейде компьютера для старого монструозного проекта на firebird 2.5

какая архитектура FB выбрана?
сколько коннектов одновременно обслуживаются?
каков суточный прирост счётчика транзакций?
каков объём базы?

зы: процессор - последнее что стОит апгрейтить.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073186
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
velovich,

на 2.5 скорее всего классик, а значит да - интересует "производительность на ядро".
Если "сильно тормозит", то это скорее всего надо оптимизировать запросы.
Можно посмотреть
http://www.ibase.ru/files/firebird/Firebird_Hardware_Guide_2015_rus.pdf
оно не сильно устарело.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073188
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
зы: процессор - последнее что стОит апгрейтить.
Не, ну если fb_inet_server грузит все процы на 100%, то лишним не будет ядер добавить, да и ускорить их.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073207
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чего на тройку не переведете? Ведь существенно быстрее работает местами... А трудозатраты минимальны.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073209
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Softologic,

теперь уже на 4-ку пора переводить. Релиз вот вот будет
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073242
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
Softologic,

теперь уже на 4-ку пора переводить. Релиз вот вот будет

Тройка обкатана не первый год уже, а четверка релиз-кандидат. Как бы рановато может быть...
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073263
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
velovich
Здравствуйте!
Встал вопрос об апгрейде компьютера для старого монструозного проекта на firebird 2.5
Сейчас проц i5-3570. Диск быстрый nvme. Памяти 16.
Проект долгие годы дорабатывался, сейчас в базе полно инфы и костылей в виде многочисленных триггеров и на некоторых выборках сильно тормозит.
...

У нас один клиент после долгих лет эксплуатации наконец-то выполнил backup + restore , и "просто поразился". Файл базы с 8 ГБ до 1.5 ГБ уменьшился, приложения стали стартовать быстрее, шустрее реакция стала.
...
...а как триггеры могут тормозить выборки?
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073283
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ

У нас один клиент после долгих лет эксплуатации наконец-то выполнил backup + restore , и "просто поразился". Файл базы с 8 ГБ до 1.5 ГБ уменьшился, приложения стали стартовать быстрее, шустрее реакция стала.


У нас один клиент отключил автоматический бэкап, который срабатывал каждые 30 сек. и бэкапил базу 2ГБ. И был поражён, насколько всё быстро стало работать
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073309
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как всегда забыл добавить важные детали.
Размер базы 500 мб.
Суперсервер.
Одновременно коннектов 5 примерно.
Транзакций 3-5 тысяч в день.
Я знаю что самый популярный совет это оптимизация, но там 200 таблиц и один из триггеров after insert аж на 50 строк.
Наследие 15 летнего допиливания.

Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра?
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073314
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
velovich
Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра?
Даже в планах такого я не слышал.
P.S. База у тебя - крошечная. С такой нагрузкой на ней должно всё летать на первом одноядерном древнем целероне и тормознутом HDD-винте.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073316
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
velovich
Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра?
Даже в планах такого я не слышал.
P.S. База у тебя - крошечная. С такой нагрузкой на ней должно всё летать на первом одноядерном древнем целероне и тормознутом HDD-винте.

Вот поэтому я и спрашиваю какой процессор брать для апгрейда
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073321
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
velovich
какой процессор

А с чего ты взял, что в процессоре затык?
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073323
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
velovich
Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра?
Даже в планах такого я не слышал.


В планах есть сделать административные задачи многопоточными backup, restore, sweep, gstat, создание индексов.

В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это?
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073329
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
velovich
какой процессор

А с чего ты взял, что в процессоре затык?

с того что база 32 раза в памяти помещается. и я засекал время на выборках при переходе с hdd на ssd
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073330
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, значит, надо память побыстрее, а не процессор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073331
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
YuRock
пропущено...
Даже в планах такого я не слышал.

В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это?

в моём случае при 2-3 сервисах, 2-3 пользователях, и куче ядер в современных процах это было бы хорошо
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073332
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Так, значит, надо память побыстрее, а не процессор.

это действительно может быть узкое место в памяти? какую тогда сборку лучше сделать?
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073337
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
velovich
Как всегда забыл добавить важные детали.
Размер базы 500 мб.
Суперсервер.
Одновременно коннектов 5 примерно.
Транзакций 3-5 тысяч в день.
Я знаю что самый популярный совет это оптимизация, но там 200 таблиц и один из триггеров after insert аж на 50 строк.
Наследие 15 летнего допиливания.
Сэгодня дэтских не завеэзли. (С, анек)
Менять имеющеюся железяку под такую микробазу лишено смысла. Железа итак с избытком.
Тут программист нужен. (с)

Давай ДДЛ тормозящего запроса, немного данных, я тебя уверяю, взлетит на том, что есть.
Полтинник твой потом пропьем, чего его зазря в железо загонять.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073339
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
velovich
YuRock
пропущено...
Даже в планах такого я не слышал.
P.S. База у тебя - крошечная. С такой нагрузкой на ней должно всё летать на первом одноядерном древнем целероне и тормознутом HDD-винте.

Вот поэтому я и спрашиваю какой процессор брать для апгрейда


У вас, как я понял, основная проблема - это медленные запросы, которые требуют больших вычислительных ресурсов.
В таком случае лучше всего заняться их оптимизацией. Возможно, какого-нибудь индекса не хватает, или наоборот, лишний индекс мешается.
Но в качестве времянки вы можете перейти на архитектуру classic / superclassic, это существенно улучшит положение пользователей вашей программы (из-за одного пользователя не будут страдать все остальные). Глядишь и существующего процессора с 4-мя ядрами будет достаточно. Но при переходе на classic / superclassic встанет (гораздо острее) проблема с подбором оптимального (и не слишком большого) значения параметра DefaultDbCachePages. Если значение слишком маленькое, то будет постоянная подгрузка базы с диска или кэша ОС (хотя у вас диск вроде быстрый). Если значение слишком большое, то несколько коннектов способны сожрать всю память ОЗУ и начнутся тормоза из-за использования файла подкачки. В этом плане идеальное решение - Firebird 3.x в режиме SuperServer.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073342
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevsky
Сэгодня дэтских не завеэзли. (С, анек)
Менять имеющеюся железяку под такую микробазу лишено смысла. Железа итак с избытком.
Тут программист нужен. (с)

Давай ДДЛ тормозящего запроса, немного данных, я тебя уверяю, взлетит на том, что есть.
Полтинник твой потом пропьем, чего его зазря в железо загонять.


что-то типа такого
CREATE TRIGGER PROJECTCOMPANY_ACTIONS FOR T_PROJECT_COMPACTION 114 POSITION 0 as
declare variable var1 integer;
declare variable var2 integer;
declare variable var3 integer;
declare variable var4 timestamp;
declare variable var5 integer;
declare variable var6 integer;
declare variable var7 integer;
declare variable var8 timestamp;
declare variable var9 integer;
begin
if (inserting or updating) then var1=new.n_project_company;
if (deleting) then var1=old.n_project_company;
/*LAST PLAN DATE*/
select first 1 A.n_project_compaction from t_project_compaction A
where A.n_project_company=:var1 and A.date_plan=
(select max(B.date_plan) from t_project_compaction B
where B.n_project_company=:var1 and B.date_plan is not null) into var2;
/*LAST FACT DATE*/
select first 1 A.n_project_compaction from t_project_compaction A
where A.n_project_company=:var1 and A.date_fact=
(select max(B.date_fact) from t_project_compaction B
where B.n_project_company=:var1 and B.date_fact is not null) into var3;
/*FIRST FACT DATE AND USER*/
select min(date_fact) from t_project_compaction where n_project_company=:var1 and date_fact is not null into var4;
select first 1 n_user2 from t_project_compaction where n_project_company=:var1 and date_fact is not null and date_fact=:var4 into var5;
/**/
update t_project_company set n_project_compaction1=:var2, n_project_compaction2=:var3, firstact_date=:var4, firstact_user=:var5 where n_project_company=:var1;
/*PROJECT LASTDATEFACTS*/
if (inserting or updating) then var6=new.n_project;
if (deleting) then var6=old.n_project;
if (inserting or updating) then var7=new.n_user2;
if (deleting) then var7=old.n_user2;
select max(date_fact) from t_project_compaction where n_project=:var6 and date_fact is not null and n_user2=:var7 into var8;
delete from t_project_lastdatefacts where n_project=:var6 and n_user=:var7;
if (:var8 is not null) then insert into t_project_lastdatefacts(n_project,n_user,lasdatefact) values (:var6,:var7,:var8);
if (inserting or updating) then var6=new.n_project;
if (deleting) then var6=old.n_project;
if (inserting or updating) then var7=new.n_user1;
if (inserting or updating) then var9=new.n_user2;
if (deleting) then var7=old.n_user1;
if (deleting) then var9=old.n_user2;
delete from t_project_lastdatefacts where n_project=:var6 and n_user=:var7;
delete from t_project_lastdatefacts where n_project=:var6 and n_user=:var9;
if (var7=var9) then var9=0;
if (var7>0) then insert into t_project_lastdatefacts(n_project,n_user,lasdatefact) values (:var6,:var7,'now');
if (var9>0) then insert into t_project_lastdatefacts(n_project,n_user,lasdatefact) values (:var6,:var9,'now');
end
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073345
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
velovich,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare variable var1 integer;
declare variable var2 integer;
declare variable var3 integer;
declare variable var4 timestamp;
declare variable var5 integer;
declare variable var6 integer;
declare variable var7 integer;
declare variable var8 timestamp;
declare variable var9 integer;


Попробуйте имена переменных задать в соответствии с их предназначением.
Скорость и вырастет. Не сразу, конечно, а после того, как станет понятно, что исправить.
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073346
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, извиняюсь, вот тут более свежий триггер. для уменьшения тормозов в этом запросе клиент теперь делает часть того что делал триггер. и так в нескольких местах.
----------
Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TRIGGER PROJECTCOMPANY_ACTIONS FOR T_PROJECT_COMPACTION 114 POSITION 0 as
 declare variable var1 integer;
 declare variable var2 integer;
 declare variable var3 integer;
 declare variable var4 timestamp;
 declare variable var5 integer;
 declare variable var6 integer;
 declare variable var7 integer;
 declare variable var8 timestamp;
 declare variable var9 integer;
begin
  if (inserting or updating) then var1=new.n_project_company;
  if (deleting) then var1=old.n_project_company;
/*LAST PLAN DATE*/
  select first 1 A.n_project_compaction from t_project_compaction A
  where A.n_project_company=:var1 and A.date_plan=
  (select max(B.date_plan) from t_project_compaction B
  where B.n_project_company=:var1 and B.date_plan is not null) into var2;
/*LAST FACT DATE*/
  select first 1 A.n_project_compaction from t_project_compaction A
  where A.n_project_company=:var1 and A.date_fact=
  (select max(B.date_fact) from t_project_compaction B
  where B.n_project_company=:var1 and B.date_fact is not null) into var3;
/*FIRST FACT DATE AND USER*/
  select min(date_fact) from t_project_compaction where n_project_company=:var1 and date_fact is not null into var4;
  select first 1 n_user2 from t_project_compaction where n_project_company=:var1 and date_fact is not null and date_fact=:var4 into var5;
/**/
  update t_project_company set n_project_compaction1=:var2, n_project_compaction2=:var3, firstact_date=:var4, firstact_user=:var5 where n_project_company=:var1;
/*PROJECT LASTDATEFACTS*/
/*changed for simple last operation date*/
/*if (inserting or updating) then var6=new.n_project;*/
/*if (deleting) then var6=old.n_project;*/
/*if (inserting or updating) then var7=new.n_user2;*/
/*if (deleting) then var7=old.n_user2;*/
/*select max(date_fact) from t_project_compaction where n_project=:var6 and date_fact is not null and n_user2=:var7 into var8;*/
/*delete from t_project_lastdatefacts where n_project=:var6 and n_user=:var7;*/
/*if (:var8 is not null) then insert into t_project_lastdatefacts(n_project,n_user,lasdatefact) values (:var6,:var7,:var8);*/
if (inserting or updating) then var6=new.n_project;
if (deleting) then var6=old.n_project;
if (inserting or updating) then var7=new.n_user1;
if (inserting or updating) then var9=new.n_user2;
if (deleting) then var7=old.n_user1;
if (deleting) then var9=old.n_user2;
delete from t_project_lastdatefacts where n_project=:var6 and n_user=:var7;
delete from t_project_lastdatefacts where n_project=:var6 and n_user=:var9;
if (var7=var9) then var9=0;
if (var7>0) then insert into t_project_lastdatefacts(n_project,n_user,lasdatefact) values (:var6,:var7,'now');
if (var9>0) then insert into t_project_lastdatefacts(n_project,n_user,lasdatefact) values (:var6,:var9,'now');
end
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073349
velovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
velovich,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare variable var1 integer;
declare variable var2 integer;
declare variable var3 integer;
declare variable var4 timestamp;
declare variable var5 integer;
declare variable var6 integer;
declare variable var7 integer;
declare variable var8 timestamp;
declare variable var9 integer;


Попробуйте имена переменных задать в соответствии с их предназначением.
Скорость и вырастет. Не сразу, конечно, а после того, как станет понятно, что исправить.

я составил запрос к этой базе, который ответил, что с 2002 года в этой компании я заработал 2.8 миллиона рублей. если я начну перезадавать имена переменным, то выделенные на новую начинку 60 тысяч просто перестанут быть выделенными
...
Рейтинг: 0 / 0
Выбор процессора для firebird
    #40073350
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это?
Да, это хорошо. Операционка разрулит потоки.
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор процессора для firebird
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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