Есть ли разница в скорости между sqlite3 и mysql? - PullRequest
10 голосов
/ 05 ноября 2008

После долгих поисков мне стало интересно, каковы преимущества / различия между mysql и sqlite3. В первую очередь я надеюсь на увеличение скорости при переносе моей базы данных разработки в производственную базу данных, хотя я предполагаю, что это в основном произойдет в моем коде. Кто-нибудь знает, какие основные различия в производительности? Здесь? Или вы могли бы указать мне в какой-то литературе, сравнивая эти два?

Ответы [ 6 ]

26 голосов
/ 05 ноября 2008

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

Если вы используете другую БД для разработки и производства, НЕ делайте. Различные механизмы баз данных ведут себя по-разному и приводят к неожиданным ошибкам. Постарайтесь максимально приблизить свою систему разработки к рабочей среде (подсказка: запустите ее на виртуальной машине)

SQLite и MySQL - прекрасные продукты в правильном контексте. Понять, каковы их возможности.

SQLite:

  • Запускается в процессе работы с клиентским приложением
  • Нет возможности сети
  • Очень низкие затраты на запрос из-за этого
  • Потенциально достаточно быстро для простых запросов, поскольку меньше IPC, системных вызовов и копирования данных.
  • Очень ограниченный параллелизм (я думаю, это может быть один писатель или несколько читателей на файл базы данных)

MySQL:

  • гораздо больше возможностей
  • Выбор двигателей (InnoDB обеспечивает хорошие функции для многих рабочих нагрузок)
  • Гораздо больше контроля над хранением, резервным копированием, восстановлением и т. Д.
  • Поддержка сети - что позволяет использовать его в крупномасштабных приложениях
  • Улучшенный параллелизм - механизм InnoDB имеет MVCC, что означает, что читатели не блокируют писателей, а писатели не блокируют читателей. Даже старый движок MyISAM имеет блокировку на уровне таблицы, а не для всей базы данных, как sqlite.
  • Возможно, лучший оптимизатор для сложных запросов

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

В SQLite вы застряли на хранении своей базы данных на локальном диске (или, конечно, на сетевом диске, если таковой имеется). Если вы хотите масштабировать свое веб-приложение, вам, вероятно, придется использовать серверную базу данных, такую ​​как MySQL.

9 голосов
/ 05 ноября 2008

SQLite - это встроенный механизм базы данных, но он работает в том же процессе, что и ваше приложение. MySQL, это сервер базы данных, который работает в своем собственном процессе.

SQLite не тратит впустую обработку и пропускную способность, упаковывая запросы между процессом сервера приложений и процессом сервера базы данных. Он просто анализирует запросы, выясняет, что делать (план запроса), вызывает функцию fopen () для файла базы данных SQLite и выполняет запрос.

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

SQLite - это, вероятно, лучшая база данных для использования, если ваш сайт не получает более 100000 посещений в день или размер вашей базы данных не превышает 25 ГБ. Другое преимущество SQLite заключается в том, что вы часто можете легко использовать его в ситуациях, когда не хватает дополнительных процессов или серверов баз данных. Проверьте http://www.sqlite.org/whentouse.html.

Вы также можете делать другие вещи с SQLite. Проверьте http://www.squidoo.com/sqlitehammer для других идей SQLite.

4 голосов
/ 05 ноября 2008

Вот простой способ взглянуть на это: Sqlite - это Блокнот, а MySQL - это MS Word. Оба делают в основном одно и то же, но по своей сути они сильно отличаются друг от друга и используются для разных целей.

Sqlite - хорошая база данных, и часто достаточно хорошая, в то время как MySQL - гораздо более сложная система, но с этой сложностью приходит мощь.

Я бы также рекомендовал не использовать разные базы данных при разработке и производстве. Глупо использовать что-то отличное от того, что используют ваши клиенты. Если вам требуется ускорение при разработке, ваши клиенты могут использовать такое же ускорение, пока они используют вашу программу.

3 голосов
/ 05 ноября 2008

SQLite - самый быстрый

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

Это быстро и легко. На самом деле должен быть в два раза быстрее, чем MySQL.

SQLite и MySQL не используются для одних и тех же задач

Вы будете использовать SQLite для простых приложений, в которых не требуется хранить более 5 Го данных. E.G: местная программа, музыкальный проигрыватель, макет или даже демонстрация веб-сайта, который вы вставите в USB-ключ.

Mysql, или еще, нужно выбирать для больших проектов, потому что он может обрабатывать огромный набор данных и иметь доступ одновременно. Вы будете использовать его для веб-сайтов с доступом пользователей, интрасетями и т. Д.

1 голос
/ 05 ноября 2008

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

0 голосов
/ 19 ноября 2009

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

Миграция на MySql, и я дошел до того, что я попытался что-то проверить разницу в скорости и обнаружил что-то вроде безопасного запроса типа «UPDATE table SET column1 = column1» для таблицы из 280 500 записей, SQlite Требуется около 13 секунд, в то время как MySql занимает всего 1 секунду.

Я все еще не гуру БД, но выбрать достаточно простое соображение: если вам требуется простое хранилище памяти для ограниченного объема данных, сложности и параллелизма (например, небольшая утилита или программы, работающие с некритичным данные), тогда с SQlite все будет в порядке, в противном случае, когда вам понадобится стабильность, параллелизм, большой объем данных, сложность в запросах, тогда ваша база данных будет MySql.

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

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