Почему транзакции SQLite связаны с ротацией жесткого диска? - PullRequest
4 голосов
/ 02 июля 2010

В FAQ по SQLite есть следующее утверждение :

Транзакция обычно требует двух полных оборотов диска, что на диске 7200 об / мин ограничивает до 60 транзакций в секунду.

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

Тогда почему и как именно транзакции так строго связаны с вращением дискового диска?

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

С Атомная фиксация в SQLite

2.0 Аппаратные допущения

SQLite предполагает, что операционная Система буферизует записи и что запрос на запись вернется до данных на самом деле был сохранен в массе устройство хранения. SQLite далее предполагает что операции записи будут переупорядочено операционной системой. Для По этой причине SQLite выполняет "сброс" или Операция "fsync" в ключевых точках. SQLite предполагает, что flush или fsync не вернется, пока все в ожидании Операции записи для файла, который покраснение завершено. Мы сказал что флеш и фсинк примитивы сломаны на некоторых версиях Windows и Linux. Это К сожалению. Он открывает SQLite до возможность повреждения базы данных после потери мощности в середине коммита. Тем не менее, нет ничего что SQLite может сделать для проверки или исправить ситуацию. SQLite предполагает что операционная система, что это работает на работах как рекламируется. Если это не совсем так, ну тогда надеюсь, вы тоже не потеряете власть часто.

1 голос
/ 02 июля 2010

Потому что это обеспечивает целостность данных, так как они гарантированно записываются на диск, а не хранятся в памяти.Таким образом, если питание отключается или что-то еще, база данных не повреждена.

Это видео http://www.youtube.com/watch?v=f428dSRkTs4 говорит о причинах (например, потому что SQLite фактически используется во многих встроенных устройствах, где питание можетну вдруг сойдет.)

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