ZeroWave
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрый день. Нужен совет или помощь. Во время закрытия чека происходит запись чека с товарами в БД (sqlLite) Каждая операция записи чека с товарами в БД происходит в рамках транзакции. На уровне программы все происходит как атомарная операция, на системном уровне данные проходят два буфера: системный буфер операционной системы и буфер жесткого диска. С помощью системной функции FlushFileBuffers можно сбросить буфер ОС, но нет возможности управлять буфером жесткого диска. При коммите транзакции SQLite, БД сама вызывает системную функцию сброса буфера ОС. Когда на уровне ОС все работает как нужно, часто происходит так, что диск отвечает, что данные достигли магнитного накопителя, хотя на самом деле, данные ещё находятся в буфере диска (оптимизация записи данных на диск) Проблема случается когда отключается UPS, либо кто то долбанет по питанию, Вопрос в следующем, можно ли как то оптимизировать данную цепочку, чтобы данные гарантированно писались на диск. |