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

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

6 ответов


Я надеюсь, что из вашего вопроса, Вы не говорите об использовании различных СУБД, в разработке и производстве.

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

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

SQLite:

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

MySQL:

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

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

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


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

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

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

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

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


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

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

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


SQLite является самым быстрым

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

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

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

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

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


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


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

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

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

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