т.е. получаеца что ретейнинг тут не при чём
примерно так. правда, ошибка и ее причины выявлены не по коду, а по откликам. так что указанная ошибка появляется именно в указанной ситуации.
запустив в цикле update по таблице записей эдак на 5М?
где у каждой записи пара триггеров, которые что-нибудь еще делают с другими таблицами, где опять есть тригггеры...
Во-первых - если политика cooperative, то фонового процесса нет и сборка мусора осуществляется либо а) при чтении/обновлении данных либо б) при авто sweep'e.
ручной или авто-свип ВСЕГДА является сборкой мусора, принудительной, поэтому в контесте ТИПА сборки мусора о нем говорить нельзя.
предположим что автосвип мы отключили, т.е. мусор может быть удалён только при чтении/обновлении.
ок
Вопрос: верно ли во-первых, и если да то когда и при каком запросе будут собраны мусорные записи от удалённых записей?
стартует транзакция, в этой транзакции выполняется запрос, который обращается к этим записям. при чтении версий (select/update) сервер проверит их на мусорность, и если нет других транзакций которые заинтересованы в старых версиях, то записи будут удалены.
сделаю select * from table where id = 15 это приведёт к сборке мусора от удалённых записей??
если хоть одна удаленная запись попадает под такое условие - "у нее" и будет собран мусор.
забодал ты с этим вопросом, честное слово.

есть запись. У НЕЕ могут быть версии. Если ЭТУ ЗАПИСЬ читают или обновляют, и среди ЕЕ версий обнаруживаются мусорные, то ТОЛЬКО ЭТИ мусорные версии будут удалены.
я тебе уже третий раз про это талдычу.
соответственно кто тогда собирёт мусор от удалённых записей??
млин, НИКТО НЕ СОБИРАЕТ. О чем и написано в garbage.htm !!!
я сейчас в бешенство приду....
Давайте рассмотрим примеры систем, в которых может происходить подобное накопление мусорных версий
и с этого места идут описания как минимум ДВУХ случаев когда мусор образуется и НЕ СОБИРАЕТСЯ.
И после этого ты говоришь что нормально читаешь? Я если чего-то интересующее меня не понимал, читал по 5-10 раз, пока не доходило.