2014-09-05 6 views
0

У меня есть база данных .db файл и для доступа к нему Я использую SQLite.SQLite большой обработки базы данных

Размер файла базы данных составляет около 100 Гб, и это больше, чем 300 таблиц.

Мои требования. Мне нужно подготовить различные запросы, которые проверяют записи перекрестных таблиц.

Таблицы соединены с основным и внешним ключами.

Каким будет лучший способ быстрее найти результат запроса?

После прочтения некоторых статей я узнал, мне нужно запустить

  • Анализ команды
  • и сделать Индексация для столбцов, где это необходимо.

Есть ли что-нибудь еще, что я могу сделать?

+1

вы используете * 100GB базы данных * SQLite? – Sathya

+0

Рассматривали ли вы использование базы данных, которая больше подходит для этой величины данных. Как postgresql, mysql и т. Д.? – heldt

+0

Ваш вопрос слишком широк, не зная схему базы данных, запрос, текущее время работы. И я не думаю, что вы можете даже опубликовать всю схему здесь. Я предлагаю вам действительно копаться в этих таблицах, чтобы выяснить узкое место и оптимизировать запрос. А также, возможно, попробуйте другую базу данных, такую ​​как mysql. –

ответ

2

Когда данные не вписываются в какой-либо кеш, время выполнения запроса зависит от времени, необходимого для чтения всех данных с диска.

Индексы помогают уменьшить объем данных, которые необходимо прочитать (двоичный поиск в индексе должен читать только несколько записей, в то время как сканирование таблицы должно читать все строки).

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

+0

.. в настоящее время, когда я подключаюсь к файлу .db. Как показано ниже .. могу ли я написать его более эффективным способом? – Hardik

+0

'using (SQLiteConnection con = новый SQLiteConnection (« Источник данных = «+ fullPath +»; Version = 3; Count Changes = off, Journal Mode = off, Pooling = true, Cache Size = 10000; Размер страницы = 4096; Synchronous = off ")) { con.Open();' – Hardik

0

Как и Tianyun Ling, ваш вопрос слишком широк. Вам нужно проанализировать, какие запросы вы запускаете, чтобы выяснить, как наилучшим образом оптимизировать вашу базу данных и индексы. Если вам нужно читать данные по-разному, это не тривиальная задача. Например, помните, что всегда есть компромисс в добавлении индексов. Вы будете читать данные быстрее, но обновления будут медленнее. Попробуйте начать с поиска на этом сайте и в Интернете для учебных пособий и т. Д., Чтобы дать вам отправную точку. Тогда, если у вас появятся более конкретные вопросы и спросите их здесь.

Кроме того, поскольку Tianyun Ling и другие подразумевают, SQLite не подходит для такой большой базы данных. Я советую вам перейти на другой менеджер баз данных.

из SQLite веб-страницы (моя изюминка):

Предлагаемые Использование для SQLite:

  • Применение Формат файла. Вместо использования fopen() для записи XML, JSON, CSV или какого-либо проприетарного формата в файлы на диске, используемые вашим приложением , используйте базу данных SQLite. Вы избежите необходимости писать, и устраните неполадку анализатора, ваши данные будут более доступны и кросс-платформенный, и ваши обновления будут транзакционными. (Больше...)

  • База данных для гаджетов. SQLite - популярный выбор для движка базы данных в мобильных телефонах, КПК, MP3-плеерах, приставках и других гаджетах . SQLite имеет небольшой размер кода, делает эффективное использование памяти, дискового пространства и пропускной способности диска очень надежным, и не требует обслуживания от администратора базы данных.

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

  • Резервный стенд для РСУ. SQLite часто используется в качестве суррогата для СУБД предприятия для демонстрационных целей или для тестирования . SQLite работает быстро и не требует установки, которая требует много проблем, связанных с тестированием, и которая делает демонстрационные версии яркими и легкими для запуска .

http://www.sqlite.org/features.html

И далее:

Соответствующие Использование для SQLite

SQLite не является непосредственно comparible с другими СУБД SQL, такие как Oracle, PostgreSQL, MySQL , или SQL Server, так как SQLite пытается выполнить это совсем другая проблема.

Другие двигатели базы данных SQL стремятся реализовать общий репозиторий данных предприятия. Они выделяют масштабируемость, параллельность, централизации и контроля.

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

SQLite не предназначен для конкуренции с Oracle. SQLite рассчитан на конкурировать с fopen().

http://www.sqlite.org/whentouse.html

Смежные вопросы