БД быстрее файлов?

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

Сделал два файла, один подключался к базе, считывал заголовок этого блога, выводил его. Второй считывал файл в переменную и далее грепом выбирал заголовок. Результаты не в пользу бд: разброс значений от 0,047 мс до 0,128мс. Файлы стабильно показывали 0,05мс.
Интересовала скорость простого запроса, без сложных условий выборки, хотя и по файлам через системный вызов можно grep’ом отфильтровать как надо.

Усредненные результаты 10 запусков  обоих файлов:
БД: ~0.0832мс
Файл: ~0.0505мс

Сами скрипты:

$ cat testdb.php
<?php
$link = mysql_connect('localhost', 'db_user', 'db_pass');
mysql_select_db('db_name', $link);
$query =
mysql_query("SELECT option_value
FROM `wp_options` WHERE `option_id` = 2;");
$result = mysql_result($query, NULL);
echo $result;
mysql_close($link);
?>

$ cat testf.php
<?php
$name = exec("cat test.txt | grep Alex");
echo $name;
?>

Подсчитывал время так:

time php script.php
0.00 avg. rating (0% score) - 0 votes

15 комментариев

  • Довольно интересный материал… Благодарю,  Александр.

  • отлично, доверить передачу пользователю параметра для подстановки выполнения в коммандную строку 🙂

  • Хех, базы данных нужны для хранения информации со сложной структурой. Нужно было сравнить хотя бы скорость считывания сериализованного массива из файла и той же информации из базы для интереса.

  • lessless, тут как бы нет призыва использовать файлы вместо бд. А параметры подстановки можно генерить и без участия пользователя, в базу же они генерятся.
    Тимофей Старицкий, ну я же написал там, что интересует скорость простого запроса без вложенных условий и конструкций ) А так да, все верно.

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

  • Ad1ce, базы быстрее. И чем сложнее требуется выборка, тем сильнее разница по скорости. Браузеры хранят кеш в файлах потому что кеш это и есть хтмл файлы, которые запрашиваются при совпадении урла с айди, которые кстати хранятся уже в базе (у меня так, линукс/фаерфокс, под виндой в реестре наверно хранятся). Да и скорость для кеша какбы не главный показатель.
    Под линухом кстати много прог юзают базы, тот же amarok, rhythmbox. Даже ася ))

  • Тест хороший, но смысла в нем нет. На «боевом» сервере я бы не стал позволять к выполнению exec. Более актуальный тест будет при использовании php-функций для работы с файлами.

    • На встроенных функциях пхп скорость будет ниже чем у базы. exec позволять или нет зависит от прав доступа и от того, кто запускает. У меня на сервере я один, поэтому такой вариант мне весьма подходит.

  • читал на форумах что файлы быстрей чем с БД, а тут еще и эксперемент доказал, так что выводы можно строить, хотя файлы больше места на хосте занимают.. вроде как..

    • wlad2, файлы занимают меньше места, база сама тоже ведь файл. Файлы проиграют базе при сложных выборках + тут системный вызов идет, а его не очень хорошо давать юзерам.

  • Забавно конечно, но для более менее серьезных проектов файлы не применимы. Лучше озаботиться конфигурацией сервера и оптимизацией ОС.

  • бред …
    1. уже давно надо использовать mysqli-функции т.е. с Й-на конце!!!
    они быстрее ИХМО

    2. экзек вообще не вариант кроме как для домашнего пользования

  • и главное БД почти всегда быстрее в реальных проектах а не искусственно созданной синтетики!!!

    пример — простая ЦМС с кучей сайтов на одном хостинге по цене одного работает чисто с одним файлом и БД, т.е. есть всего один скрипт — все остальное в бд
    скорость оцените сами — http://mx.2828.ru/

  • базы в десятки, а порой в сотни раз медленнее файлов. обратное утверждают лишь голимые теоретики, которые не пытались структурировать сложную и большую по объему информацию в файлах. так вот даже с учетом поиска по папкам нужного файла, поиска новости в самом файле, а после этого поиска в строке с новостью данных самой новости и таких вещей как лайки и т.п., файлы окажутся быстрее базы данных в десятки раз. А если сайт небольшой (несколько сотен, в принципе даже несколько тысяч страниц),то разница будет еще больше. Минус файлов заключается в том, что хранить нужно все в большом количестве папок/файлов. Из-за этого скорость первого доступа для нового посетителя довольно низка, однако при просмотре других страниц диск уже открывает нужный файл значительно быстрее. Ну и главный минус заключается в обработке данных, сложно будет что-то менять на множестве страниц, т.к. придется редактировать множество файлов по различным путям. Но зависит от задачи, на файлах легко можно поднять сайт в десятки тысяч страниц и с более высокой скоростью доступа чем на БД. Так что не несите чушь.

  • кстати, у меня при размещении 2-3 тысяч страниц нужная новость на дешевом хостинге доставалась за 0.0005-0.005 более медленная скорость случалась когда заход был после долгого простоя без посетителей. Если же такой же сайт запустить на впс за 240 рублей, то на «горячую» страница генерируется за 0.00028 секунды, ну что, галимые теоретики, покажите мне базу данных которая сделает это быстрее)) насколько я знаю из примеров, 1 запрос к базе будет по времени сопоставим с полной генерацией страницы в моей цмс.

css.php