Поэтому время от времени я запускаю веб-скрейперы. Иногда без базы данных не обойтись, и я предпочитаю sqlite из-за простоты использования. Однако я боюсь, что мой последний проект создает нагрузку на мой SSD; взглянем.
У меня есть отдельные процессы, каждый из которых запрашивает в базе данных URL-адрес для очистки, делает это, а затем записывает результаты и фиксирует их на диске. Я хочу, если это возможно, избежать ненужной очистки, поэтому я делаю коммит после каждого результата, чтобы другие процессы знали, что не следует очищать этот результат.
Что меня беспокоит, так это то, что каждая фиксация является фактической записью на диск. С чем-то вроде миллиона запросов мой SSD преждевременно устареет :/ Итак, в основном, два вопроса:
Действительно ли это означает, что 1 фиксация = 1 запись на физический диск? Или в SQLite есть буферизация, или Linux делает что-то подобное, или, может быть, сам контроллер SSD хранит копию базы данных в ОЗУ (или памяти контроллера) и лишь изредка синхронизируется с диском? Сама база данных меньше 20 МБ.
Если я этого боюсь, какие-либо настройки, которые я мог бы внести в sqlite3, или неизбежна ли база данных сервер-клиент? Насколько я понимаю, сервер базы данных будет иметь эксклюзивный доступ к базе данных, поэтому он может просто хранить рабочую версию в ОЗУ и регулярно синхронизироваться с диском.
Прошу прощения, вопрос больше дискуссионный :/
url, scrapped
), и заблокировать их для записи, когда вы выбираете их таким образом1- lock the url rows, 2-select the url rows 3-scrape them 4-set the flag for them 5-release the lock
- person Accountant م   schedule 18.01.2019