|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
fraks tromani Dimitry Sibiryakov, везде любой запрос начинается со starttransaction и заканчивается commit/rollback Выполните запрос на рабочей базе и посмотрите как и все ли транзакции у вас заканчиваются. Запрос написан для Fibrebird-2.5 не гарантирую что на тройке будет работать. Транзакция у которой MON$TRANSACTION_ID = OLDEST TRANSACTION - и есть та самая которая не дает собирать мусор. Код: plsql 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. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Вот так можно посмотреть какие запросы были выполнены в этой транзакции Код: plsql 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.
А вот так глянуть на сам текст запроса Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
По результатам можно будет потыкать программистов носом в конкретное место программы, где они херово работают с транзакцией (не закрывают например). Респект. Мастхевные запросы! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 10:55 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
fraks, спасибо добрый человек за запросы, будем тыкать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 11:12 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani, горе, ты статистику смогло снять ? Бекап сделать ? Или сервер виноват ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 11:20 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
hvlad, да щастье мое, усе сделал, программистов потыкал ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 11:23 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani, разобрались что вешало суть вот в чем: есть таблица1 которая много и часто обновляется и есть запрос который выводит некую сводную по этой таблице суммирует данные и т.д. а результат в DBGrid в которой участвуют записи от первой до последней из таблицы1 так вот, и последний вопрос в каком режиме запустить транзакцию этого запроса чтоб оно выполнилось и не плодила версий даже если после этого некоторый данные в таблице1 изменятся? или в контексте DBGrid и компонентов IB вопрос не имеет смысла? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 11:57 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani, до 4.0 запускай в транзакции с режимом изолированности Read Committed Read Only. Правда результат может быть не совсем верным для отчётов с агрегатами пока лучше использовать SNAPSHOT, а он будет удерживать версии. Ну или делай commit сразу после построения отчёта, правда в этом случае надо использовать кеширующие датасеты которые не закрываются по commit, или вообще не используй DbGrid и DataSet в этом месте ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:05 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Как вариант набирать в снапшоте данные в GTT коммититиь сразу после набора и до посинения елозить по ГТТ, с фильтрами, ДВ компонентами и прочими блэкджеком и ... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 13:30 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
вы зря пишете советы по поводу оптимизации софта. Тут вопросы задает админ. А где-то там, "во глубине ... руд", сидят разрабы этого счастья, и сюда они 100% не ходят. Классическая ситуация. К нам регулярно обращаются конторы-юзеры, и когда мы киваем на их вендоров, вендоры уходят в глубокое шифрование. Видимо, "такое" им нафиг не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 13:48 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
kdvТут вопросы задает админ. А где-то там, "во глубине ... руд", сидят разрабы этого счастья, и сюда они 100% не ходят. Классическая ситуация. А по-моему в данном случае наоборот: топикстартер как раз и есть архитектор и разработчик в одном лице, а админ отсутствует как класс. Это если судить по его реакции на советы использовать "-g" и отпинать разработчиков. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:02 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я архитектор и админ по вынужденности, хотя от админа у меня мало опыта, у вас конечно тут подход что на любой проект мало-мальский только на одну БД надо 17 человек это ж не везде возможно, посоветуете аутсорсинговый сервис по админке фаябердных бд с саппортом 24/7 и за небольшие деньги? вот и я не знаю, приходится админить то что наархитектил ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:30 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Gstat execution time Tue Nov 17 14:16:37 2020 Database header page information: Flags 0 Generation 16438551 System Change Number 0 Page size 16384 ODS version 12.0 Oldest transaction 2728724 Oldest active 2728725 Oldest snapshot 2728725 Next transaction 16420357 Sequence number 0 Next attachment ID 77647 Implementation HW=AMD/Intel/x64 little-endian OS=Windows CC=MSV C Shadow count 0 Page buffers 0 Next header page 0 Database dialect 3 Creation date Nov 17, 2020 9:07:26 Attributes force write Variable header data: Sweep interval: 20000 *END* Database file sequence: File C:\BASES\LF\STORAGE.FDB is the only file Analyzing database pages ... POOLBETS (149) Primary pointer page: 274, Index root page: 275 Total formats: 1, used formats: 1 Average record length: 74.10, total records: 710742 Average version length: 9.00, total versions: 5595281, max versions: 7433 Average fragment length: 7.32, total fragments: 271, max fragments: 1 Average unpacked length: 214.00, compression ratio: 2.89 Pointer pages: 5, data page slots: 14824 Data pages: 14824, average fill: 87% Primary pages: 4997, secondary pages: 9827, swept pages: 4778 Empty pages: 7, full pages: 14815 Fill distribution: 0 - 19% = 8 20 - 39% = 0 40 - 59% = 0 60 - 79% = 3936 80 - 99% = 10880 Index PK_POOLBETS (0) Root page: 103484, depth: 2, leaf buckets: 259, nodes: 710742 Average node length: 5.89, total dup: 0, max dup: 0 Average key length: 3.00, compression ratio: 1.32 Average prefix length: 2.95, average data length: 1.00 Clustering factor: 13934, ratio: 0.02 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 1 60 - 79% = 0 80 - 99% = 258 Index POOLBETS_IDX1 (1) Root page: 103743, depth: 2, leaf buckets: 222, nodes: 710742 Average node length: 5.04, total dup: 627337, max dup: 49 Average key length: 2.15, compression ratio: 1.84 Average prefix length: 3.82, average data length: 0.13 Clustering factor: 46284, ratio: 0.07 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 1 60 - 79% = 0 80 - 99% = 221 Index POOLBETS_IDX2 (2) Root page: 103965, depth: 2, leaf buckets: 218, nodes: 710742 Average node length: 4.89, total dup: 710736, max dup: 608970 Average key length: 2.00, compression ratio: 0.57 Average prefix length: 1.14, average data length: 0.00 Clustering factor: 16348, ratio: 0.02 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 7 60 - 79% = 1 80 - 99% = 210 Index POOLBETS_IDX3 (3) Root page: 104180, depth: 2, leaf buckets: 234, nodes: 710742 Average node length: 4.91, total dup: 708562, max dup: 38795 Average key length: 2.02, compression ratio: 6.29 Average prefix length: 12.69, average data length: 0.02 Clustering factor: 51260, ratio: 0.07 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 37 60 - 79% = 2 80 - 99% = 195 Index POOLBETS_IDX4 (4) Root page: 104396, depth: 2, leaf buckets: 215, nodes: 710742 Average node length: 4.89, total dup: 710740, max dup: 572639 Average key length: 2.00, compression ratio: 0.90 Average prefix length: 1.81, average data length: 0.00 Clustering factor: 9798, ratio: 0.01 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 1 60 - 79% = 1 80 - 99% = 213 Index POOLBETS_IDX5 (5) Root page: 104611, depth: 2, leaf buckets: 217, nodes: 711504 Average node length: 4.89, total dup: 711499, max dup: 354429 Average key length: 2.00, compression ratio: 1.00 Average prefix length: 2.00, average data length: 0.00 Clustering factor: 11229, ratio: 0.02 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 5 60 - 79% = 1 80 - 99% = 211 Index POOLBETS_IDX6 (6) Root page: 104826, depth: 2, leaf buckets: 371, nodes: 710742 Average node length: 4.89, total dup: 709648, max dup: 3314 Average key length: 2.00, compression ratio: 1.50 Average prefix length: 2.99, average data length: 0.00 Clustering factor: 581020, ratio: 0.82 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 314 60 - 79% = 0 80 - 99% = 57 Index POOLBETS_IDX7 (7) Root page: 105041, depth: 2, leaf buckets: 395, nodes: 710742 Average node length: 8.61, total dup: 3152, max dup: 14 Average key length: 5.73, compression ratio: 1.78 Average prefix length: 7.42, average data length: 2.76 Clustering factor: 124409, ratio: 0.18 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 31 60 - 79% = 1 80 - 99% = 363 Gstat completion time Tue Nov 17 14:17:38 2020 на данный момент вот так? это норм или все плохо? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:33 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromaniэто норм или все плохо? Терминальная стадия. Это не лечится, переходи на другую СУБД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:40 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani, плохо, версий на несколько порядков больше чем количество записей. Самая длинная цепочка версий ~7000. То есть мусор не собирается. А когда начнёт собираться всё встанет колом, ибо ещё кучу индексов навешено. Не удивительно что оно тормозит. Свип так и не отработал b/r вы тоже не сделали. Либо меняйте архитектуру приложения, либо переходите на Firebird 4.0, там оно хоть как-то дышать сможет. Как я уже говорил относительно безболезненно можно активной держать RC RO транзакцию, в других режимах изолированности будет копиться мусор. Или найди способ сделать читающую транзакцию короткой. UPDATE лучше заменить на INSERT. Лучше иметь много записей, чем мало, но с гигантским количеством версий. Если есть возможность прикрутить хранимые агрегаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:58 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Симонов Денис, это после свипа и б/р поработало 4 часа ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 15:02 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
авторда там очень быстрый поток данных и сильно меняющийся во времени автор 250 миллионов транзакций за четыре дня в среднем 700+ транзакций/сек если это все льется через один инстанс, есть смысл агрегировать данные и фиксировать пачками в одной транзакции, например раз в сек если переписываются одни и теже ключи по нескольку раз, то интервал можно увеличить опять же если все делает один инстанс, то и сводные данные можно на нем считать и забирать с него же ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 15:33 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani Oldest transaction 2728724 Oldest active 2728725 Oldest snapshot 2728725 Next transaction 16420357 tromani Average record length: 74.10, total records: 710742 Average version length: 9.00, total versions: 5595281, max versions: 7433 ... Primary pages: 4997, secondary pages: 9827, swept pages: 4778 Судя по всему, какая-то небольшая часть записей интенсивно обновляется на фоне долго играющих тр-ций и в них накапливаются очень длинные цепочки версий - 7433 это очень много. 8 индексов, правда, весьма небольших. Я бы увеличил кеш БД хотя бы до 20К страниц для начала. Ну и избавляться от долгоиграющих тр-ций или переводить их в режим RC RO, если возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 15:44 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
hvlad, о спасибо я хоть понял че куда смотреть, последний час воздействие волшебного пинания привело к тому что max versions: 1-4 держится а всего 80-90 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 16:27 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
hvlad Найди Oldest active, выясни какого она так долго живёт и исправляй ситуацию. А при отключении от базы всех клиентов, все транзакции прибиваются автоматом?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 16:51 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Интересуюсь у топикстартера - какова сама исходная задача? Откуда столько данных, что за данные, почему нужно пихать это в базу? Проблема читающей транзакции, в частности в том что большинство, а может и все DB_Aware компоненты почему-то исповедуют подход что когда транзакция завершена то данные из буфера удаляются и мы на руках ничего не имеем. Посему, все искаробочные и рекомендуемые букварями методы работы с этим щастьем откровенно провоцируют держать открытой транзакцию в то время как это совершенно не нужно, в подавляющем количестве случаев. Как только ты данные с сервера получил - они уже сразу устарели. Держать транзакцию открытой имеет смысл только если это снапшот и тебе нужны какие-то дополнительные отчеты что бы данные не разъехались. Но опять же, если этих отчетов немного - получи все сразу, закрой транзакцию и смотри на них сколько угодно. Если таки не отходить от DB_Aware то придется использовать кеширующие датасеты. Я еще во времена D2 забил на все эти DB-Aware, данные получаю через компоненты которые не являются датасетом, сразу выгребаю их в свой буфер, закрываю транзакцию и дальше пялюсь сколько угодно, хоть вообще от базы отцепляйся. Хотим освежить данные - жмем F5, вызывается опять запрос, очищает буфер, заливает в него новые данные, репозиционируемся в нем, если нужно. Ну или какая иная операция потребует обновления данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 17:56 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
fraks, да, спасибо уже все исправили, проблема была в читающей висящей транзе, а данные выводились в дбгрид, теперь коммитится сразу по завершению запроса кому надо обновляет и все щасливы. данные исходные онлайн и проблема в том что там несколько стадий у них создание-подтверждение и бывает иногда последующее переподтверждение, все эти данные вносятся беспрерывно 150-200 клиентами еще и пачками, а начальство мониторит общий отчет где все это суммируется вычитается и перемножается. ЗЫ. Ну т.е. начальство смотрело отчет и оставляло его висеть часов 10 а за это время там все обновлялось и обновлялось ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 18:14 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
alekcvp А при отключении от базы всех клиентов, все транзакции прибиваются автоматом?.. Конечно прибиваются, но не автоматом, а роллбеком. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 18:15 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani данные вносятся беспрерывно 150-200 клиентами что это за роботы, которые таким небольшим вол-вом генерят тысячу транзакций в сек? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 20:14 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, ой, о таком не говорят в приличном обществе) там боты ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 21:33 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
tromani, Боты, имхо, еще не приговор. Но, как правило, признак финансирования. Вы не подумывали о профессиональной поддержке вашего решения силами специалистов? Ведь она у FB сообщества есть. Причем, кмк, достаточно приличная. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 22:50 |
|
gfix sweep висит по 10 часов
|
|||
---|---|---|---|
#18+
Vlad F tromani, Боты, имхо, еще не приговор. Но, как правило, признак финансирования. Вы не подумывали о профессиональной поддержке вашего решения силами специалистов? Ведь она у FB сообщества есть. Причем, кмк, достаточно приличная. Да ладно, сам научится. Если начнёт учиться, а не гоношиться с пинанием разработчиков FB ;) Но это я так, брюзжу, он, я так думаю, уже и сам понял :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 23:04 |
|
|
start [/forum/topic.php?fid=40&msg=40019694&tid=1560184]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 247ms |
total: | 423ms |
0 / 0 |