Я использую небольшой компьютер со встроенной памятью EMMC для сбора и обработки данных в реальном времени. Для хранения этих данных я использовал sqlite, чтобы иметь возможность агрегировать и выполнять некоторую граничную обработку перед отправкой в облако партиями.
У меня были проблемы с повреждением памяти EMMC после долгого времени работы, и я считаю, что это происходит из-за ограничения записи в память NAND.
Большинство рекомендаций, которые я видел, предлагают использоватьSQlite WAL
прагма, чтобы сократить записи по крайней мере пополам. По сравнению с предварительным тестированием с использованием iostat
это, по-видимому, имеет большое значение для уменьшения объема записи без каких-либо дополнительных усилий.
Однако, согласно документации Sqlite :
[After a checkpoint]... the WAL file is recycled ... The checkpoint does not
normally truncate the WAL file (unless the journal_size_limit pragma is set).
Instead, it merely causes SQLite to start overwriting the WAL file from the
beginning.
Мой вопрос:
Будет ли эта перезапись (или усечение с journal_size_limit) приводить к тому, что одни и те же блоки в NAND постоянно перезаписываются, так как файл WAL перезагружает себя и делаетэто угроза для пределов записи / стирания памяти?
Точно так же, будет ли общая память представлять подобный риск?
В целом, я думаю, что это все еще стоит использовать настройку, но я хочу убедиться, чтопараметры установлены правильно, чтобы продлить срок службы машины.