Несколько файлов для одной базы данных SQLite - PullRequest
18 голосов
/ 23 февраля 2012

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

Ответы [ 3 ]

20 голосов
/ 30 ноября 2015

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

Используйте

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 отдельно для каждой таблицы!

6 голосов
/ 23 февраля 2012

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

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

3 голосов
/ 18 октября 2013

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

Возможности, которые могут снизить производительность:

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

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

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

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