Насколько Масштабируемый SQLite? [закрытый]

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

172
задан Community 23 May 2017 в 11:33
поделиться

9 ответов

Вчера я выпустил небольшой сайт <глоток> * для отслеживания представителя, который использовал общую базу данных SQLite для всех посетителей. К сожалению, даже со скромной загрузкой, что это поставило мой хост, который это выполняло вполне медленно. Это вызвано тем, что вся база данных была заблокирована каждый раз, когда кто-то просмотрел страницу, потому что это содержало, обновляет/вставляет. Я скоро переключился на MySQL и в то время как у меня не было большого количества времени для проверения его, это кажется намного более масштабируемым, чем SQLite. Я просто помню медленные загрузки страницы, и иногда получение базы данных заблокировало ошибку при попытке выполнить запросы от оболочки в sqlite. Однако я выполняю другой сайт от SQLite очень хорошо. Различие - то, что сайт статичен (т.е. я - единственный, который может изменить базу данных), и таким образом, это работает просто великолепно для параллельных чтений. Мораль истории: только используйте SQLite для веб-сайтов, где обновления базы данных происходят редко (менее часто, чем каждая загруженная страница).

редактирование : Я просто понял, что не мог быть справедливым к SQLite - я не индексировал столбцов в базе данных SQLite, когда я служил ему от веб-страницы. Это частично вызвало замедление, которое я испытывал. Однако наблюдение за блокировкой базы данных стоит - если у Вас будут особенно тягостные обновления, производительность SQLite не будет соответствовать MySQL или Пост-ГРЭС.

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

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

<глоток> * сайт больше не не доступен

425
ответ дан Kyle Cronin 23 November 2019 в 20:37
поделиться

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

, Но это однопользовательское, таким образом, это зависит от того, о каком масштабировании Вы говорите.

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

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

, Но Sqlite будет, конечно функция в пользовательской среде, но это не будет работать хорошо.

57
ответ дан angry person 23 November 2019 в 20:37
поделиться

Sqlite рабочий стол или незавершен база данных. SQL Server, MySQL, Oracle и их братья серверы .

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

24
ответ дан Joel Coehoorn 23 November 2019 в 20:37
поделиться

Думайте о нем этот путь. Облегченный SQL будет заблокирован каждый раз, когда кто-то использует его (SQLite не соединяет чтение). Таким образом, если Ваше обслуживание веб-страница или приложение, которое имеет несколько параллельных пользователей, только один мог использовать Ваше приложение за один раз с SQLLite. Так тут же масштабирующаяся проблема. Если это - одно приложение человека, заявляет Музыкальная Библиотека, где Вы исполняете сотни обязанностей, оценок, информации, использования, игры, время воспроизведения тогда Облегченный SQL будет масштабировать красиво содержащие тысячи, если не миллионы записей (Желающий жесткий диск)

MySQL, с другой стороны, будет работать хорошо на приложения для серверов, где люди на всем протяжении будут использовать его одновременно. Это не блокирует, и это является довольно большим в размере. Таким образом для Вашей музыки библиотека MySql была бы закончена уничтожение, поскольку только один человек будет видеть его, ЕСЛИ это не будет общей музыкальной библиотекой, где тысячи добавляют или обновляют его. Тогда MySQL был бы тем для использования.

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

3
ответ дан Anirudha Gupta 23 November 2019 в 20:37
поделиться

Это могло бы стоить проверить РЕАЛЬНЫЙ SQL Server, который является сервером базы данных, основывался на SQLite.

0
ответ дан Paul Lefebvre 23 November 2019 в 20:37
поделиться

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

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

1
ответ дан jle 23 November 2019 в 20:37
поделиться

Читали ли вы эту документацию по SQLite - http://www.sqlite.org/whentouse.html ?

SQLite обычно отлично работает, так как ядро базы данных для низкого и среднего трафик веб-сайтов (то есть, 99,9% всех сайтов). Объем веб-трафика, который может обрабатывать SQLite зависит, конечно, от того, насколько сильно Сайт использует свою базу данных. В общем-то говоря, любой сайт, который получает меньше чем 100K хитов / день должен работать нормально с SQLite. 100 000 хитов в день это консервативная оценка, а не жесткая верхняя граница. SQLite был продемонстрировал работу с 10 раз такой объем трафика.

23
ответ дан 23 November 2019 в 20:37
поделиться

Я думаю, что веб-сервер (цифрой 1), обслуживающий множество клиентов, появляется на бэкэнде с одним подключением к базе данных, не так ли?

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

3
ответ дан 23 November 2019 в 20:37
поделиться

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

Следует помнить, что, несмотря на все хвастовство, SQLite НЕ создан для хранения данных. Существуют различные варианты использования не рекомендуемые для SQLite. Прекрасные люди, стоящие за SQLite, говорят об этом сами:

Другой способ взглянуть на SQLite заключается в следующем: SQLite не предназначен для замены Oracle. Он предназначен для замены fopen().

И это приводит к главному аргументу (не количественному, извините, а качественному): SQLite не подходит для всех случаев использования, в то время как MySQL может покрыть множество разнообразных случаев использования, пусть и не идеально. Например, вы можете использовать MySQL для хранения файлов cookie Firefox (вместо SQLite), но вам потребуется, чтобы эта служба работала постоянно. С другой стороны, вы можете иметь транзакционный веб-сайт, работающий на SQLite (как многие делают) вместо MySQL, но ожидайте большого количества простоев.

8
ответ дан 23 November 2019 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: