|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Здравствуйте, уважаемые! Никак не могу понять одну вещь про сборку мусора в базе. Дано: FB 2.5. SS или FB 3.0 SS, один коннект, две таблицы Tbl1 и Tbl2, три транзакции Tr1 (пишущая), Tr2 и Tr3 (только чтение) Действия: 1. в Tr3 делаем select * from Tbl2, транзакция остается висеть. 2. В Tr1 пишем много записей в таблицу Tbl1, коммитим Tr1 3. Делаем много разных чтений из Tbl1 в Tr2 4. Удаляем из нее все записи опять в Tr1, коммитим Tr1 5. Коммитим Tr2. Для очистки мусора делаем select * from Tbl1 в Tr2, снова коммитим Tr2 Теперь если повторять шаги 2-5, то с каждым циклом они выполняются все медленнее и медленнее, из-за чего делаю вывод, что мусор не собирается. Но почему? Единственная незакомиченная транзакция в базе - Tr3 и ее таблица Tbl1 никак не интересует И дело явно в Tr3, так как если ее закоммитить в первом шаге или вообще первый шаг не делать, то сколько бы не было циклов 2-5 они выполняются примерно за одно и то же время. Не знаю, важно или нет: 1. Tbl1 - таблица временная на коннект, Tbl2 - постоянная. 2. Наличие/отсутствие запросов select * from Tbl2 в незакомиченных транзакциях из другого коннекта никак не влияют на скорость выполнения цикла. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 08:07 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeon,Но почему? Единственная незакомиченная транзакция в базе - Tr3 и ее таблица Tbl1 никак не интересует Судя по всему, Вы думаете будто транзакции "привязаны" к конкретным таблицам (, которые были в них прочитаны ил изменены). Это не верно. Транзакции оказывают влияние на все без исключения таблицы базы. Даже если бы вы в просто стартовали Tr3 и ничего в ней не читали, то мусор бы точно так же накапливался. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 08:23 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
bsv9VerLeon,Но почему? Единственная незакомиченная транзакция в базе - Tr3 и ее таблица Tbl1 никак не интересует Судя по всему, Вы думаете будто транзакции "привязаны" к конкретным таблицам (, которые были в них прочитаны ил изменены). Это не верно. Транзакции оказывают влияние на все без исключения таблицы базы. Даже если бы вы в просто стартовали Tr3 и ничего в ней не читали, то мусор бы точно так же накапливался. Очевидно, что я что-то недопонимаю в сборке мусора, но если бы Tr3 была пишущей или snapshot, но она read и read_committed - с чего ее должны интересовать старые версии записей всех таблиц в базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 08:41 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
авторТеперь если повторять шаги 2-5, то с каждым циклом они выполняются все медленнее и медленнее, из-за чего делаю вывод, что мусор не собирается. А точно накапливается? Посмотрите точно количество версий до и после эксперимента: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 08:54 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeon5. Коммитим Tr2. Для очистки мусора делаем select * from Tbl1 в Tr2, снова коммитим Tr2 как минимум надо было Код: sql 1.
в противном случае нет никаких гарантий, что ты прочёл таблицу целиком ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 09:19 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
выдал по этой таблице Average version length: 0.00, total versions: 0, max versions: 0 еще до попытки сборки мусора но не думаю, что он может выдать что-то вразумительное про временную таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 09:21 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Симонов ДенисVerLeon5. Коммитим Tr2. Для очистки мусора делаем select * from Tbl1 в Tr2, снова коммитим Tr2 как минимум надо было Код: sql 1.
в противном случае нет никаких гарантий, что ты прочёл таблицу целиком Да дело не в этом точно (кстати, вроде как раз count(*) теперь мусор не собирает, так как собственно в записи не лезет) Сборка мусора прекрасно происходит запросом и select *, если при этом не висит Tr3 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 09:24 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeonДа дело не в этом точно (кстати, вроде как раз count(*) теперь мусор не собирает, так как собственно в записи не лезет) собирает. count просто в некоторых случаях не распаковывает запись, но видимость версий проверяется в любом случае. Если версия не видна и её можно удалить, то она удаляется VerLeonСборка мусора прекрасно происходит запросом и select * в данном случае да, ибо перед этим делается delete всех записей ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 09:33 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Симонов ДенисVerLeonДа дело не в этом точно (кстати, вроде как раз count(*) теперь мусор не собирает, так как собственно в записи не лезет) собирает. count просто в некоторых случаях не распаковывает запись, но видимость версий проверяется в любом случае. Если версия не видна и её можно удалить, то она удаляется VerLeonСборка мусора прекрасно происходит запросом и select * в данном случае да, ибо перед этим делается delete всех записей Да, согласен, не учел, что мне надо собрать мусор по полностью пустой таблице. Но в данном случае без разницы. Что-то мне кажется, что проблема именно в том, что Tbl1 - временная на коннект, вот только почему от этого такой эффект... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 09:47 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeon, включи трассировку и посмотри что происходит. Заодно будет видно с какими действительно параметрами стартуют транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 09:53 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeonОчевидно, что я что-то недопонимаю в сборке мусора, но если бы Tr3 была пишущей или snapshot, но она read и read_committed - с чего ее должны интересовать старые версии записей всех таблиц в базе?Для GTT это не имеет значения, ибо в них можно писать и в RO тр-циях. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 10:47 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
hvladVerLeonОчевидно, что я что-то недопонимаю в сборке мусора, но если бы Tr3 была пишущей или snapshot, но она read и read_committed - с чего ее должны интересовать старые версии записей всех таблиц в базе?Для GTT это не имеет значения, ибо в них можно писать и в RO тр-циях. О как.. Т.е. чтобы собрать мусор в GTT нужно сначала завершить вообще все транзакции в коннекте? Печально... Придется видимо операции с ними выносить в отдельный коннект ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 11:05 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
В данном сценарии не вижу - зачем GTT создана как ON COMMIT PRESERVE ROWS ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 11:11 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeonПридется видимо операции с ними выносить в отдельный коннектЕще есть ON COMMIT DELETE ROWS ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 11:25 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
hvladДля GTT это не имеет значения, ибо в них можно писать и в RO тр-циях. Поясните, пож, для чего это не имеет значения? Я не удержался и попробовал: при наличии висящей читающей транзакции, массово пишу и изменяю данные в GTT. Не важно, в пишущей или в читающей транзакции я модифицирую GTT, версии записи не накапливаются. Мусор не копится на любых GTT - и на "ON COMMIT PRESERVE ROWS" и на "ON COMMIT DELETE ROWS". То есть, мне, вообще, не удается повторить сценарий VerLeon. Не копится мусор, ни при каких условиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 11:32 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Да, я тестировал на версии 3.0.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 11:36 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
hvladВ данном сценарии не вижу - зачем GTT создана как ON COMMIT PRESERVE ROWS Ну это упрощенное описание, на самом деле на шагах 2-4 делается много всего и долго и не хотелось иметь длинную пишущую транзакцию, поэтому делалось по классике: писалось все короткими транзакциями, а читалось другой, RO Но не учитывался вот этот факт: hvlad ибо в них можно писать и в RO тр-циях Сейчас попробую выделить всю работу с GTT (и запись и чтение) в одну RO-транзакцию и сделать их DELETE ROWS. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 11:46 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
bsv9Да, я тестировал на версии 3.0.5. У меня 3.0.2 и 2.5.7 - поведение одинаковое. Да и вряд ли что-то в 3.0.5 поменялось, раз Влад говорит, что это нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:37 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeon, Влад не сказал, что это нормально. Он намекнул, что если ты в Tr1 только пишешь во временную таблицу и не пишешь в постоянные, то смысла делать транзакцию write нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:56 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Переделал все на DELETE ROWS с чтением/записью в них в RO транзакции - проблемы больше нет. Ну и не удивительно, с такими GTT проблемы с мусором быть и не может, главное что RO транзакция отработала. Влад, спасибо за наставление на путь истинный! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:56 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Симонов ДенисVerLeon, Влад не сказал, что это нормально. Он намекнул, что если ты в Tr1 только пишешь во временную таблицу и не пишешь в постоянные, то смысла делать транзакцию write нет. Ну логично, что если RO может писать в GTT, то и мусор из нее не соберется, даже если висит только эта RO в Tr1 я конечно не только во временную писал, это упрощенный пример, на самом деле там куча всего. Пришлось разделять, но в итоге проблема ушла и стало еще быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:59 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Хм, а всё же - нормально это или нет? Не окажется ли, что это в ближайших релизах FB посчитают ненормальным и моя схема с писанием в GTT c помощью RO транзакции накроется? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 15:40 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
В первых релизах 2.5 в RO транзакции нельзя было писать в GTT, потом разрешили. У меня вся логика длительных вычислений построена на GTT+RO ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 15:49 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeonНе окажется ли, что это в ближайших релизах FB посчитают ненормальнымВсе идет у тому, что пишущая ридкоммитед транзакция перестанет копить мусор и RO перестанет быть столь актуальной. Так что, если перестанет писать в RO (что мне не кажется правильным, вполне нормально в RO режиме сделать некие "пометки на полях" база же не меняется) сменишь на RW. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 15:50 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, всё зависит от того как построено приложение. В 4.0 если в Read Committed будет недофетченный курсор, то будет удерживать версии, но теперь только те что видны ей, а не всю цепочку. А RO или RW уже по фигу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 17:09 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyVerLeonНе окажется ли, что это в ближайших релизах FB посчитают ненормальнымВсе идет у тому, что пишущая ридкоммитед транзакция перестанет копить мусор и RO перестанет быть столь актуальной. Так что, если перестанет писать в RO (что мне не кажется правильным, вполне нормально в RO режиме сделать некие "пометки на полях" база же не меняется) сменишь на RW. Ну не все так просто. В большом приложении транзакций много и в частности в том, которое досталось мне, долго выстраивали классику (пишем в коротких пишущих, читаем только в RO) . А потом часть таблиц перевели на GTT. А потом... И потом.. На что я и напоролося. Собственно не проблема конечно сделать RW - в плане трудоемкости, но чем это аукнется в плане скорости - хз, а это очень критичный сегмент приложения и боюсь придется переписывать заново. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 06:10 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
VerLeonдолго выстраивали классику (пишем в коротких пишущих, читаем только в RO) . А потом часть таблиц перевели на GTT. А потом... И потом.. А потом приходят естественные последствия использования паттернов вместо мозга. По-моему, уже пора начать выкашивать из интернета эту "классику" как вредный совет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 11:04 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Дима, людям не так просто уйти от концепции Датасетов. А там этот совет является хорошим воркароундом. Предлагать при работе с ними что-то другое до выхода 4-ки считаю рановато. Да и когда выйдет, надо бы обкатать новые решения. Сейчас оно типа попробовал, ну работает. Но реальной промышленной эксплуатации ещё не было. У тебя есть другие работающие решения? Ну так поделись ими с общественностью ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 11:18 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Симонов ДенисУ тебя есть другие работающие решения? Ну так поделись ими с общественностью Транзакция на форму/датасет/запрос. Живёт сколько нужно, гарантированно закрывается когда не нужна (в отличии от единой транзакции, валяющейся в датамодуле). Это рецепт для мышевозников, неспособных написать процедуры класса "Загрузить документ" и "Сохранить документ". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 12:29 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
а если посмотреть невооруженным взглядом, шо творятЪ с FB жабисты, со своими всякими ORM-ами... ваще писец! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 12:34 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а это... Ну так и сейчас на форме делается одна RC RO для чтения в гридах и одна snapshot для редактирования. Я то думал ты против чего-то ещё протестуешь, а ты зацепился за слово "одну" да ещё и в контексте глобального датамодуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 12:36 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Мимопроходящий, у жабистов как раз с долгими транзакциями обычно проблем нет. Чтобы они появились это надо сильно постараться натягивать Delphi архитектуру в жабу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 12:38 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
да при чем тут транзакции. речь об "использования паттернов вместо мозга". у жабистов с этим строго... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 12:41 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Мимопроходящий, а... ну с паттернами да. Есть такое дело. Впрочем паттерны, как и ORM, в некоторых случаях не так плохи, но нужно понимать когда их уместно применять, а когда нет. А вот натягивать один единственный паттерн на все случаи жизни уже признак не желания думать ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 12:45 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Симонов ДенисНу так и сейчас на форме делается одна RC RO для чтения в гридах и одна snapshot для редактирования. Нет, сейчас (кажется, даже по твоему рецепту) читающая транзакция пихается в глобальный датамодуль и к ней привязываются вообще все датасеты. Что и создаёт проблему с её временем жизни. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 13:08 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я в исходниках сей рецепт заменил, в книжке тоже. Кстати по твоему совету. Оно разве что в статье висеть осталось. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 13:13 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
20.09.2019 13:08, Dimitry Sibiryakov пишет: > Нет, сейчас (кажется, даже по твоему рецепту) читающая транзакция пихается в глобальный > датамодуль и к ней привязываются вообще все датасеты. Что и создаёт проблему с её временем > жизни. оно с момента создания FIB+ повелось. как best practice. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 13:14 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Так официально-то проблем как раз не было. А потом оказалось, что блобы текут. Ещё потомее оказалось, что GTT как-то умудряются версии держать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 16:53 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov...читающая транзакция пихается в глобальный датамодуль и... Господа, новички почти всегда ищут "рабочие примеры", а старички держатся за привычки ("я так всегда делал, и нормально"), никуда от реальности мира не деться. Напишите кто-нибудь статью, "как надо говнокодить", и стадо дружно побредет в указанном направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 18:08 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
20.09.2019 18:08, ёёёёё пишет: > Напишите кто-нибудь статью, "как надо говнокодить", и стадо дружно побредет в указанном направлении. да щаззз! то что ты называешь "стадом" статьи не читает. никакие и ни про что. максимум - видеоролики. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 18:16 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Напишите видеоролик. С котиками в начале и в конце. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 19:19 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Мимопроходящий20.09.2019 18:08, ёёёёё пишет: > Напишите кто-нибудь статью, "как надо говнокодить", и стадо дружно побредет в указанном направлении. да щаззз! то что ты называешь "стадом" статьи не читает. никакие и ни про что. максимум - видеоролики. Коллега Rik целую систему программирования создал, уверенный в верности исходного паттерна (вечная RO и короткая RW транзакция) : https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1049868&msg=17464015 Он где-то хватанул информацию, проверил на паре тестов - схема рабочая, и всё, к следующей задаче переключился. Обычный режим работы прикладника, мне так кажется. Я когда-то все статьи с ibase и доступную документацию скачал и распечатал для изучения, а теперь только релизноты почитываю, ибо куча иных дел накопилась... и то же самое - пользуюсь наработанными паттернами, на основе прежде всего упомянутых статей, примеров с почившего Devrace да книжки уважаемого Ковязина-Вострикова. За последнее время по разработке софта с FB и статей новых не было, кмк, одна на хабре была, да и та неинтересная(про фаердак, тьфу). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 20:24 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Мимопроходящийоно с момента создания FIB+ повелось. как best practice. Раньше. С того момента как Баба Аня эту фичу со стартом RO RC в состоянии commited придумала. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 23:03 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
ёёёёё пользуюсь наработанными паттернами у меня наоборот - паттерны для вещей, которые НЕ надо делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 11:58 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
ёёёёё, а чем тебе FireDac не нравится? Про Fib+ и IBX и так уже всё написано. Так что писалось про компоненты которые сейчас в поставке Delphi ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 14:15 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
Симонов ДенисПро Fib+ и IBX и так уже всё написано. Где оно, что уже написано? Все статьи с Devrace недоступны. Может быть, кто-то сохранил их examle -pack? Добавьте на гитхаб, пожалуйста. https://github.com/madorin/fibplus ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 15:00 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
ёёёёёСимонов ДенисПро Fib+ и IBX и так уже всё написано. Где оно, что уже написано? Все статьи с Devrace недоступны. Может быть, кто-то сохранил их examle -pack? Добавьте на гитхаб, пожалуйста. https://github.com/madorin/fibplus Вот. Часть1 Часть2 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 15:15 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
ёёёёёСимонов Денисёёёёё, http://www.ibase.ru/ibx/ этого не достаточно? Ну там же ничего нет. Я про "рекомендуемые паттерны", если что, с которых начинали разговор. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 15:18 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
ёёёёёЯ про "рекомендуемые паттерны" Рекомендация: паттерны использовать не рекомендуется. Use brain, Luke! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 15:26 |
|
Еще раз про сборку мусора
|
|||
---|---|---|---|
#18+
ёёёёё, это не паттерны. Это демонстрационные примеры для FibPlus. Такие примеры должны делать сами производители компонентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2019, 15:27 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560574]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 412ms |
0 / 0 |