Магазин временных таблиц в SQLite на iPhone - PullRequest
1 голос
/ 22 июня 2009

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

На реальном устройстве я пытаюсь настроить это, используя:

PRAGMA temp_store = 2;

Это выполняется без ошибок. Однако, когда я запрашиваю конфигурацию, используя:

PRAGMA temp_store;

Результаты не возвращаются, поэтому я не могу проверить, действует ли эта конфигурация. Я могу прочитать другие настройки PRAGMA, такие как «page_size». Может кто-нибудь сказать мне:

  • Если это ожидаемое поведение
  • Если это неподдерживаемая конфигурация в SQLite на iPhone
  • Если бы такая оптимизация была бы бессмысленной для iPhone, даже если бы это было возможно (возможно, из-за аппаратного обеспечения)
  • Как я могу успешно переместить временное хранилище таблиц в память в этом сценарии

Примечание: Мне хорошо известны базовые данные в SDK 3.0, но у меня есть веские причины не использовать их.

Обновление: Джиттер указал, что экземпляр SQLite на iPhone может быть скомпилирован с SQLITE_TEMP_STORE , настроенным на постоянное использование временных файлов. Я не знал об этой настройке - есть ли способ подтвердить, что это так?

Ответы [ 2 ]

1 голос
/ 23 июня 2009

Я просто добавил источник SQLite в свои проекты, потому что SQLite хотя бы на iPhone OS 2.x не безопасен для потоков.

1 голос
/ 22 июня 2009

Не знаю, но думаю, что они скомпилировали sqllite с SQLITE_TEMP_STORE = 0. И есть еще один парень, который попробовал это и не смог. Оптимизация SQLite на iPhone

  • Элемент списка

Я не могу попробовать это сам, но в источнике тоже есть функция sqlite3TempInMemory() ( src / main.c ). Не знаю, можете ли вы это назвать.

Эта функция возвращает true, если основная память должна использоваться вместо временный файл для временного пейджера файлы и выписки журналов. Возвращаемое значение зависит от значения db-> temp_store (параметр времени выполнения) и значение времени компиляции SQLITE_TEMP_STORE. Следующая таблица описывает отношения между эти два значения и эти функции возвращаемое значение.

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