чтение из MySQL быстрее или чтение из файла быстрее? - PullRequest
4 голосов
/ 29 июня 2010

HI

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

Что я думаю, это даст лучшую скорость, если я буду хранить данные в файле ??

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

Я использую PHP для чтения файла ...

Ответы [ 7 ]

13 голосов
/ 29 июня 2010

Чтение одного файла = быстро.

Чтение многих / больших файлов = медленно.

Чтение отдельных небольших записей из базы данных = пустая трата ввода / вывода.

Объединение многихзаписи в базе данных = быстрее, чем доступ к файлам.

7 голосов
/ 29 июня 2010

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

Чтобы выяснить, почему производительность ваших запросов не соответствует вашим ожиданиям, вы можете использовать предложение explain со своими вариантами выбора (http://dev.mysql.com/doc/refman/5.1/en/explain.html).

5 голосов
/ 29 июня 2010

Чтобы ответить на эту тему, да.

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

4 голосов
/ 29 июня 2010

Это зависит от того, какие данные вы храните. Структурированные данные обычно намного быстрее и более гибкие / мощные для чтения с использованием SQL, поскольку это именно то, для чего они созданы.Если вы хотите искать, фильтровать, сортировать или группировать по определенному атрибуту, структуры индекса и оптимизации DBS являются подходящими.

Однако, когда использует DB для хранения больших файлов (BLOB) , которые содержат неструктурированные данные в том смысле, что вы не собираетесь искать, фильтровать, сортировать или группировать по какой-либо части файлов, тогда эти файлы просто увеличивают размер базы данных и замедляют ее.Microsoft проводит интересное исследование на эту тему (пока что нужно найти ссылку).Это исследование является причиной, по которой Microsoft представила Внешнее хранилище больших двоичных объектов в своем SQLServer, что в основном означает то, что вы просили: большие двоичные объекты сохраняются в файлах вне базы данных, потому что они измерили, что доступ гораздо быстрее.

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

2 голосов
/ 29 июня 2010

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

DBM - это, по сути, чтение с вашего жесткого диска + кеш для ускорения (+ некоторые алгоритмы сортировки данных). Помните, что ваша база данных хранится на вашем жестком диске:)

0 голосов
/ 29 июня 2010

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

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

0 голосов
/ 29 июня 2010

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

В общем, MySQL неплохо справляется с быстрым поиском данных - в конце концов, это его цель в жизни. Поэтому, если у вас нет действительно веской причины, почему ФС должна быть намного быстрее, придерживайтесь БД и проверяйте свои индексы и все такое.

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