2008-11-03 4 views
4

Я использую SQLite для ряда приложений на рабочем столе и КПК. Большинство операций выполняются только для чтения, поскольку SQLite функционирует как хранилище данных для справочных материалов в моих приложениях.Оптимизация Sqlite: сценарий только для чтения

В принципе, я ищу предложения по повышению производительности в сценарии, когда вы знаете, что доступ к данным доступен только для чтения.

Возможно, с помощью различных настроек прагмы? и т. д.

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


Хороший совет и хорошо поставленный. Я надеюсь на что-то более конкретное, рассказывая движку о том, что я делаю. Например, сообщая движку, в БД не будет многократной записи или каким-либо образом будет изменена обработка кеша.

Однако, я рад, что вы обратили внимание на «дизайн» аспекта базы данных как на главную проблему.

+0

Вы пытались де-нормализовать данные? – Quibblesome 2008-11-03 10:04:54

ответ

-1

вы можете позвонить sqlite3_open_v2() с флагом SQLITE_OPEN_READONLY. Я понятия не имею, действительно ли sqlite3 использует это для оптимизации своего поведения или как способ установки соответствующих разрешений на открытый вызов, который он выполняет для ОС.

+1

Нет, sqlite3_open_v2() с флагом SQLITE_OPEN_READONLY не улучшает производительность вообще, просто добавленную безопасность. – 2010-01-12 15:39:34

2

Стандартных советов производительности базы данных все еще применяется:

  • Убедись, что ваши запросы используют индексы, а не полное сканирования таблицы
  • Будьте селективной, как вы можете в запросах, так что вы не тянете ненужные строки из дБ
  • Выберите только столбцы, которые вы хотите
2

sqlite3_open_v2() с флагом SQLITE_OPEN_READONLY изменяет способ, которым SQLite обрабатывает оппортунистические блокировки без реальных преимуществ производительности. Вы можете использовать pragma cache_size, если вы делаете много чтений или в зависимости от размера db, делаете копию в памяти db с помощью опции: memory open.

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