Как просмотреть базу данных SQLite в памяти с помощью инструмента командной строки sqlite3

Есть ли способ загрузить всю базу данных SQLite в память для более быстрого получения результатов с помощью инструмента sqlite3 CLI? Спасибо!


person ezequiel-garzon    schedule 01.07.2011    source источник


Ответы (2)


Я не уверен, чего вы пытаетесь достичь здесь, но у меня есть две идеи, чтобы предложить:

1- Скопируйте все из вашей базы данных в какую-нибудь прикрепленную базу данных в памяти. Эта ссылка расскажет вам, как подключить базу данных в памяти: http://www.sqlite.org/lang_attach.html

2- Увеличьте размер кэша, сохраняйте транзакции в памяти и храните в памяти «временное хранилище»: http://www.sqlite.org/pragma.html#pragma_cache_size http://www.sqlite.org/pragma.html#pragma_journal_mode http://www.sqlite.org/pragma.html#pragma_temp_store

person Community    schedule 01.07.2011

Эта статья содержит хороший пример, а именно:

sqlite> attach database ':memory:' as mydb;
sqlite> .schema
CREATE TABLE log(ts,msg TEXT);
sqlite> create table mydb.log as select * from log;
sqlite> select * from mydb.log order by ts desc limit 5;

Однако я был немного разочарован, так как улучшения скорости, на которые я надеялся, не произошло. Я думаю Я не один. Набор данных, который я пробовал, составляет> 300 МБ, что намного превышает размер кэша страницы по умолчанию, указанный там, поэтому вы можете себе представить, что загрузка всей базы данных в ОЗУ даст заметные результаты, но на самом деле это не так. Любые мысли?

person ezequiel-garzon    schedule 01.07.2011
comment
Вам нужно будет описать, какие улучшения вы пытаетесь получить... Похоже, вам нужно определить некоторые индексы и убедиться, что они используются по назначению. Если вы опубликуете дополнительную информацию, такую ​​как структура вашей таблицы (таблиц) и SQL, который нуждается в улучшении, возможно, я или другие смогут помочь. - person ; 03.07.2011