Несколько файлов для одной базы данных SQLite

Afaik, SQLite хранит одну базу данных в одном файле. Поскольку это снизит производительность при работе с большими базами данных, можно ли прямо сказать SQLite не хранить всю БД в одном файле и хранить вместо этого разные таблицы в разных файлах?

Ответы

Ответ 1

Если вам не требуется соединение между этими таблицами, вы можете вручную разбить БД и сказать, в каких таблицах находится DB (= файл).

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

Ответ 2

Вопрос около трех лет, но я приземлился здесь, когда искал тот же вопрос. Позднее я узнал, что это возможно:

Использование

sqlite3.exe MainDB.db

ATTACH DATABASE 'SomeTableFile.db' AS stf;

Доступ к таблице из другого файла базы данных

SELECT * FROM stf.SomeTable;

Вы можете даже присоединиться к нескольким файлам

SELECT *
FROM MainTable mt
JOIN stf.SomeTable st
ON (mt.id = st.mt_id);

https://www.sqlite.org/lang_attach.html

tameera сказал, что существует ограничение в 62 прикрепленных базах данных, но я никогда не попадал в этот предел, поэтому я не могу подтвердить это.

Большим преимуществом, помимо некоторых особых случаев, является то, что вы ограничиваете фрагментацию в файлах базы данных, и вы можете использовать команду VACUUM отдельно для каждой таблицы!

Ответ 3

Файлы базы данных SQLite могут расти довольно большими без каких-либо штрафных санкций.

То, что может ухудшить производительность:

  • нарушение блокировки файлов
  • размер таблицы (при использовании индексов и выдаче запросов на запись)

Кроме того, по умолчанию SQLite ограничивает количество подключенных баз данных до 10.

В любом случае попробуйте разбить свои таблицы. Вы увидите, что SQLite может сильно расти таким образом.