Несколько файлов для одной базы данных 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 может сильно расти таким образом.