Базы данных: куда идут данные перед фиксацией? - PullRequest
2 голосов
/ 16 февраля 2012

Мы пытаемся обнаружить утечку памяти в нашем коде.Когда программное обеспечение работает, я вижу, как медленно и постоянно увеличивается использование памяти.Каждая операция добавляет записи в базу данных.

Тогда мне было интересно, куда на самом деле идут данные команды INSERT, прежде чем мы передадим изменения?Добавлены ли данные в фактический файл базы данных и помечены как «Откатить это, если требуется»?или хранится только во внутренней памяти и выгружается при выполнении запроса на коммит?

Если это поможет, мы сейчас используем Access.

1 Ответ

1 голос
/ 17 февраля 2012

Как часть «Начать транзакцию», «Данные» как таковые никуда не денутся и не изменятся никаким образом, вместо этого они записывают список выданных ей команд. Если вы затем отмените транзакцию с помощью «отката», инструкции будут отброшены, а изменения не внесены, в противном случае, если будет выдано «Подтверждение», он выполнит сохраненные инструкции в правильном порядке.

Поскольку инструкции хранятся в локальной таблице (как упомянуто Альбертом), именно поэтому вы видите увеличение памяти, так как локальный файл открывается полностью в память (следовательно, мы разделили фронтальную и внутреннюю базы данных в Access to избегайте сброса огромного файла в оперативную память)

Стоит также упомянуть, что для всех выпущенных операторов SQL их синтаксис проверяется перед сохранением, чтобы убедиться, что если вы используете несколько SQL; он не потерпит неудачу на полпути и оставит ваши данные в состоянии, которое вы не намеревались.

Извинения за "Инструкции" Я знаю, что это термин для неспециалистов, но я надеюсь, что это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...