Есть ли разница в скорости между sqlite3 и mysql?

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

Ответ 1

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

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

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

SQLite:

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

MySQL:

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

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

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

Ответ 2

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

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

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

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

Вы также можете делать другие вещи с помощью SQLite. Ознакомиться с http://www.squidoo.com/sqlitehammer для получения дополнительной информации о SQLite.

Ответ 3

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

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

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

Ответ 4

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

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

Быстро и легко. Фактически предполагается, что он в два раза быстрее MySQL.

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

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

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

Ответ 5

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

Ответ 6

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

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

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

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