LIME пишет:это почему это?
MVCC потому что.
update в mvcc делает следующее:
для актуальной строки выставляет максимальный идентификатор видимости в id текущей транзакции, создаёт новую копию этой строки, максимальный id транзакции не указан, а минимальный - текущая транзакция.
delete выставляет максимальный идентификатор видимости и не удаляет строку физически - она впоследствии может быть перезаписана чем-нибудь другим полезным, но не удалена. К слову, у mysql нет вакуума, так что вернуть занятое дисковой место операционной системе без даунтайма - задача нетривиальная.
LIME пишет:опять же почему? только индекс флага/с флагом
С флагом - да, только индексы, в которые входит этот флаг.
С архивной или партицированной по этому флагу таблицей - надо будет перестроить все индексы. Поэтому и нужно обновить больше индексов. Вроде логично?
Да, можно партицировать. Придётся отказаться от FK, зато становится куда проще делать смешанные запросы, и к архивной и к активной частям.
|