Проблема предварительного кэширования Windowsite в Windows - PullRequest
2 голосов
/ 07 августа 2009

SQLite - отличная маленькая база данных, но у меня проблема с ней в Windows. При первом запуске приложения выполнение запроса к базе данных объемом 100 МБ может занять до 50 секунд. Последующие загрузки занимают 10% этого времени.

После некоторых обсуждений в списке рассылки SQLite мне сказали «Ошибка в Windows. Она активно предварительно кэширует большие файлы базы данных
- читает большими кусками файлов - чтобы все выглядело так, как будто программы
как Outlook лучше, чем они есть на самом деле. К сожалению, хотя
это ускоряет некоторые программы, заставляет других действовать вяло, потому что они
не имеют никакого контроля над тем, сколько читается, когда они просят всего несколько
байт файла. "

Эта проблема осложняется тем, что нет способа получить информацию о прогрессе, пока все это происходит из SQLite, поэтому мои пользователи считают, что что-то не работает. (Я мог бы показать фиктивный отчет о проделанной работе, но это действительно глупо для острого инструмента.)

Я считаю, что есть способ отключить предварительное кэширование в глобальном масштабе, но есть ли какой-то способ обойти это программно?

Ответы [ 2 ]

1 голос
/ 21 декабря 2009

У меня тоже такая же проблема с моим первым запросом. Проблема возвращается после длительного отсутствия запросов к базе данных. Кажется, это проблема кеширования памяти. Мое программное обеспечение работает 24/7, и время от времени пользователь выполняет запрос SELECT. Я также выполняю запрос к базе данных того же размера.

1 голос
/ 07 августа 2009

Я не знаю, как решить проблему с кэшированием, но 50 секунд звучит экстремально. Если сам запрос занимает 10% от этого, это означает, что загрузка файла 100 МБ занимает 45 секунд. Даже если Windows считывает весь файл за один раз, это не должно занять более пары секунд при нормальной скорости жесткого диска.

Файл очень фрагментирован или что-то в этом роде?

Мне кажется, здесь есть нечто большее, чем просто проповедь.

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