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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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


У вас, как я понял, основная проблема - это медленные запросы, которые требуют больших вычислительных ресурсов.
В таком случае лучше всего заняться их оптимизацией. Возможно, какого-нибудь индекса не хватает, или наоборот, лишний индекс мешается.
Но в качестве времянки вы можете перейти на архитектуру classic / superclassic, это существенно улучшит положение пользователей вашей программы (из-за одного пользователя не будут страдать все остальные). Глядишь и существующего процессора с 4-мя ядрами будет достаточно. Но при переходе на classic / superclassic встанет (гораздо острее) проблема с подбором оптимального (и не слишком большого) значения параметра DefaultDbCachePages. Если значение слишком маленькое, то будет постоянная подгрузка базы с диска или кэша ОС (хотя у вас диск вроде быстрый). Если значение слишком большое, то несколько коннектов способны сожрать всю память ОЗУ и начнутся тормоза из-за использования файла подкачки. В этом плане идеальное решение - Firebird 3.x в режиме SuperServer.
...
Рейтинг: 0 / 0
26.05.2021, 22:48
    #40073342
velovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор процессора для firebird
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
26.05.2021, 22:52
    #40073345
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор процессора для firebird
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
26.05.2021, 22:56
    #40073346
velovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор процессора для firebird
нет, извиняюсь, вот тут более свежий триггер. для уменьшения тормозов в этом запросе клиент теперь делает часть того что делал триггер. и так в нескольких местах.
----------
Код: 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
26.05.2021, 23:00
    #40073349
velovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор процессора для firebird
ъъъъъ
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
26.05.2021, 23:01
    #40073350
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор процессора для firebird
Симонов Денис
В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это?
Да, это хорошо. Операционка разрулит потоки.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор процессора для firebird / 25 сообщений из 79, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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