Оптимизация SQLite - две базы данных против одной - PullRequest
1 голос
/ 22 апреля 2011

Я разрабатываю приложение для iPhone с двумя базами данных SQLite.Мне интересно, должен ли я использовать только одну.

В первой базе данных есть десяток маленьких таблиц (каждая из которых имеет четыре или пять столбцов INTEGER или TEXT).В большинстве таблиц всего несколько десятков строк, но в одной таблице будет несколько тысяч строк «Предметов».Все таблицы связаны между собой, поэтому между ними много объединений.

Вторая база данных содержит только одну таблицу.Он имеет BLOB-столбец с одной строкой, относящейся к некоторым элементам из первой базы данных (фотографии элементов).Эти большие двоичные объекты используются только в небольшой части программы, поэтому они редко присоединяются или объединяются с первой базой данных (строки можно легко получить без объединений).

Первый размер файла базы данных будет около мегабайта;БД с BLOB будет намного больше - около 50 мегабайт.Я отделил большие двоичные объекты, потому что хотел иметь возможность создавать резервные копии меньшей базы данных без необходимости переносить большие двоичные объекты.Я также думал, что разделение больших двоичных объектов может повысить производительность для небольших таблиц, но я не уверен.

Каковы преимущества и недостатки наличия двух баз данных (в частности, баз данных SQLIte) для разделения больших двоичных объектов по сравнениюиметь только одну базу данных с таблицей, заполненной очень узкими таблицами, смешанными с таблицей больших двоичных объектов?

1 Ответ

1 голос
/ 24 апреля 2011

Даже при 50 МБ это очень маленький размер базы данных, и вы не увидите разницы в производительности из-за размера самой базы данных.

Однако, если вы считаете, что производительность - этовыполните проверку ваших запросов к БД и убедитесь, что вы не «ВЫБИРАЕТЕ» строки BLOB в запросах, где эта информация вам не нужна.Возвращая больше строк из базы данных, чем вам нужно (представьте, что вы читаете больше данных с жесткого диска, чем вам нужно), вы гораздо чаще сталкиваетесь с проблемами производительности.

Не знаюпросмотрите все плюсы в их разделении, если только у вас нет жестких ограничений на общий размер резервной копии.Это просто добавит сложности в странные места в вашем приложении.

...