2010-11-29 4 views
11

Функция begin_transaction принимает логический аргумент, указывающий, какой тип синхронизации должен быть выполнен; физическое, когда true или логическое значение false.Что такое «физическая синхронизация» базы данных Киотского кабинета?

Что это означает, когда это относится к «физическому» или жесткому, синхронизации?

ответ

8

Я не совсем уверен, эквиваленты Java, но:

  • Логическая синхронизация означает, что любые изменения БД пишутся из кэша СУБД в файловой системе. В C вы сделали бы это, используя fprintf/fwrite/write/etc.

  • Физическая синхронизация означает вышеописанную, с дополнительной операцией просить ОС нажимать указанные изменения на постоянное хранилище (жесткий диск, SSD, что угодно), а не хранить их в кеше файловой системы. Это гарантирует, что эти изменения не будут потеряны, если что-нибудь случится. В системе Linux/POSIX, которая подразумевает вызов системных вызовов fsync() или fdatasync().

РЕДАКТИРОВАТЬ:

Видимо эквивалент Fsync() в Java является FileDescriptor.sync():

http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileDescriptor.html#

Дело в том, что для достижения истинных семантики ACID для БД , все транзакции должны быть синхронизированы с постоянным носителем. В противном случае ваше приложение должно было бы иметь дело с транзакциями, которые не выполнялись без ошибок - СУБД будет переводить транзакции в файловую систему и успешно возвращаться, но тогда изменения могут потеряться, если, например, система потеряла силу.

Проблема с физической синхронизацией заключается в том, что она может оказать значительное влияние на производительность. Жесткие диски могут обрабатывать ограниченное количество транзакций в секунду (SSDs - это лот быстрее), поэтому первое, что нужно сделать для улучшения производительности БД, - это объединить вставки в больших транзакциях.

+1

Может ли кто-нибудь добавить тег «kyotocabinet» для этого вопроса, пожалуйста? У меня нет 1.500 для создания новых тегов. Благодаря! – 2010-11-29 02:08:42

 Смежные вопросы

  • Нет связанных вопросов^_^