|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Здравствуйте! Встал вопрос об апгрейде компьютера для старого монструозного проекта на firebird 2.5 Сейчас проц i5-3570. Диск быстрый nvme. Памяти 16. Проект долгие годы дорабатывался, сейчас в базе полно инфы и костылей в виде многочисленных триггеров и на некоторых выборках сильно тормозит. Какой сейчас десктопный проц в пределах 50 тысяч рублей стоит рассматривать в плане максимальной производительности на ядро для firebird? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 15:18 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
26.05.2021 15:18, velovich пишет: > Встал вопрос об апгрейде компьютера для старого монструозного проекта на firebird 2.5 какая архитектура FB выбрана? сколько коннектов одновременно обслуживаются? каков суточный прирост счётчика транзакций? каков объём базы? зы: процессор - последнее что стОит апгрейтить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 15:23 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich, на 2.5 скорее всего классик, а значит да - интересует "производительность на ядро". Если "сильно тормозит", то это скорее всего надо оптимизировать запросы. Можно посмотреть http://www.ibase.ru/files/firebird/Firebird_Hardware_Guide_2015_rus.pdf оно не сильно устарело. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 15:29 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий зы: процессор - последнее что стОит апгрейтить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 15:31 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
А чего на тройку не переведете? Ведь существенно быстрее работает местами... А трудозатраты минимальны. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 16:34 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Softologic, теперь уже на 4-ку пора переводить. Релиз вот вот будет ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 16:37 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Симонов Денис Softologic, теперь уже на 4-ку пора переводить. Релиз вот вот будет Тройка обкатана не первый год уже, а четверка релиз-кандидат. Как бы рановато может быть... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 17:46 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich Здравствуйте! Встал вопрос об апгрейде компьютера для старого монструозного проекта на firebird 2.5 Сейчас проц i5-3570. Диск быстрый nvme. Памяти 16. Проект долгие годы дорабатывался, сейчас в базе полно инфы и костылей в виде многочисленных триггеров и на некоторых выборках сильно тормозит. ... У нас один клиент после долгих лет эксплуатации наконец-то выполнил backup + restore , и "просто поразился". Файл базы с 8 ГБ до 1.5 ГБ уменьшился, приложения стали стартовать быстрее, шустрее реакция стала. ... ...а как триггеры могут тормозить выборки? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 18:36 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
ъъъъъ У нас один клиент после долгих лет эксплуатации наконец-то выполнил backup + restore , и "просто поразился". Файл базы с 8 ГБ до 1.5 ГБ уменьшился, приложения стали стартовать быстрее, шустрее реакция стала. У нас один клиент отключил автоматический бэкап, который срабатывал каждые 30 сек. и бэкапил базу 2ГБ. И был поражён, насколько всё быстро стало работать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 19:34 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Как всегда забыл добавить важные детали. Размер базы 500 мб. Суперсервер. Одновременно коннектов 5 примерно. Транзакций 3-5 тысяч в день. Я знаю что самый популярный совет это оптимизация, но там 200 таблиц и один из триггеров after insert аж на 50 строк. Наследие 15 летнего допиливания. Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 20:57 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра? P.S. База у тебя - крошечная. С такой нагрузкой на ней должно всё летать на первом одноядерном древнем целероне и тормознутом HDD-винте. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 21:20 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
YuRock velovich Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра? P.S. База у тебя - крошечная. С такой нагрузкой на ней должно всё летать на первом одноядерном древнем целероне и тормознутом HDD-винте. Вот поэтому я и спрашиваю какой процессор брать для апгрейда ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 21:33 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich какой процессор А с чего ты взял, что в процессоре затык? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 21:46 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
YuRock velovich Я правильно понимаю, что сейчас до сих пор firebird не может загрузить одной транзакцией все ядра? В планах есть сделать административные задачи многопоточными backup, restore, sweep, gstat, создание индексов. В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 21:50 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
ъъъъъ velovich какой процессор А с чего ты взял, что в процессоре затык? с того что база 32 раза в памяти помещается. и я засекал время на выборках при переходе с hdd на ssd ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:04 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Так, значит, надо память побыстрее, а не процессор. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:06 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Симонов Денис YuRock пропущено... Даже в планах такого я не слышал. В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это? в моём случае при 2-3 сервисах, 2-3 пользователях, и куче ядер в современных процах это было бы хорошо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:06 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Так, значит, надо память побыстрее, а не процессор. это действительно может быть узкое место в памяти? какую тогда сборку лучше сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:08 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich Как всегда забыл добавить важные детали. Размер базы 500 мб. Суперсервер. Одновременно коннектов 5 примерно. Транзакций 3-5 тысяч в день. Я знаю что самый популярный совет это оптимизация, но там 200 таблиц и один из триггеров after insert аж на 50 строк. Наследие 15 летнего допиливания. Менять имеющеюся железяку под такую микробазу лишено смысла. Железа итак с избытком. Тут программист нужен. (с) Давай ДДЛ тормозящего запроса, немного данных, я тебя уверяю, взлетит на том, что есть. Полтинник твой потом пропьем, чего его зазря в железо загонять. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:32 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich YuRock пропущено... Даже в планах такого я не слышал. P.S. База у тебя - крошечная. С такой нагрузкой на ней должно всё летать на первом одноядерном древнем целероне и тормознутом HDD-винте. Вот поэтому я и спрашиваю какой процессор брать для апгрейда У вас, как я понял, основная проблема - это медленные запросы, которые требуют больших вычислительных ресурсов. В таком случае лучше всего заняться их оптимизацией. Возможно, какого-нибудь индекса не хватает, или наоборот, лишний индекс мешается. Но в качестве времянки вы можете перейти на архитектуру classic / superclassic, это существенно улучшит положение пользователей вашей программы (из-за одного пользователя не будут страдать все остальные). Глядишь и существующего процессора с 4-мя ядрами будет достаточно. Но при переходе на classic / superclassic встанет (гораздо острее) проблема с подбором оптимального (и не слишком большого) значения параметра DefaultDbCachePages. Если значение слишком маленькое, то будет постоянная подгрузка базы с диска или кэша ОС (хотя у вас диск вроде быстрый). Если значение слишком большое, то несколько коннектов способны сожрать всю память ОЗУ и начнутся тормоза из-за использования файла подкачки. В этом плане идеальное решение - Firebird 3.x в режиме SuperServer. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:38 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:48 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
velovich, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Попробуйте имена переменных задать в соответствии с их предназначением. Скорость и вырастет. Не сразу, конечно, а после того, как станет понятно, что исправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:52 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
нет, извиняюсь, вот тут более свежий триггер. для уменьшения тормозов в этом запросе клиент теперь делает часть того что делал триггер. и так в нескольких местах. ---------- Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 22:56 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
ъъъъъ velovich, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Попробуйте имена переменных задать в соответствии с их предназначением. Скорость и вырастет. Не сразу, конечно, а после того, как станет понятно, что исправить. я составил запрос к этой базе, который ответил, что с 2002 года в этой компании я заработал 2.8 миллиона рублей. если я начну перезадавать имена переменным, то выделенные на новую начинку 60 тысяч просто перестанут быть выделенными ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 23:00 |
|
Выбор процессора для firebird
|
|||
---|---|---|---|
#18+
Симонов Денис В принципе можно и запросы параллелить, но тут возникает такой вопрос. Допустим у вас 12 ядер и 50 пользователей. И тут один пользователь зафигачил супер сложный запрос который сожрал 6 ядер. Хорошо ли это? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 23:01 |
|
|
start [/forum/topic.php?fid=40&msg=40073242&tid=1560025]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
others: | 237ms |
total: | 418ms |
0 / 0 |