БД быстрее файлов?
Май 09
Вроде везде говорится, что да. При стандартном открытии файлов в пхп возможно и быстрее, но ведь можно считывать содержимое файла через системный вызов при помощи 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

Май 09 at 17:19
Довольно интересный материал… Благодарю, Александр.
Май 09 at 18:38
отлично, доверить передачу пользователю параметра для подстановки выполнения в коммандную строку
Май 09 at 18:52
Хех, базы данных нужны для хранения информации со сложной структурой. Нужно было сравнить хотя бы скорость считывания сериализованного массива из файла и той же информации из базы для интереса.
Май 09 at 20:25
lessless, тут как бы нет призыва использовать файлы вместо бд. А параметры подстановки можно генерить и без участия пользователя, в базу же они генерятся.
Тимофей Старицкий, ну я же написал там, что интересует скорость простого запроса без вложенных условий и конструкций ) А так да, все верно.
Май 11 at 17:49
Никогда не слышал, чтоб базы были быстрее файлов. Именно поэтому кэш хранят в файлах, а не в базе. Плюс базы в том, что позволяет структуризовать информацию.
Май 11 at 18:15
Ad1ce, базы быстрее. И чем сложнее требуется выборка, тем сильнее разница по скорости. Браузеры хранят кеш в файлах потому что кеш это и есть хтмл файлы, которые запрашиваются при совпадении урла с айди, которые кстати хранятся уже в базе (у меня так, линукс/фаерфокс, под виндой в реестре наверно хранятся). Да и скорость для кеша какбы не главный показатель.
Под линухом кстати много прог юзают базы, тот же amarok, rhythmbox. Даже ася ))
Май 13 at 10:23
Тест хороший, но смысла в нем нет. На «боевом» сервере я бы не стал позволять к выполнению exec. Более актуальный тест будет при использовании php-функций для работы с файлами.
Май 13 at 11:30
На встроенных функциях пхп скорость будет ниже чем у базы. exec позволять или нет зависит от прав доступа и от того, кто запускает. У меня на сервере я один, поэтому такой вариант мне весьма подходит.
Май 15 at 23:16
читал на форумах что файлы быстрей чем с БД, а тут еще и эксперемент доказал, так что выводы можно строить, хотя файлы больше места на хосте занимают.. вроде как..
Май 15 at 23:23
wlad2, файлы занимают меньше места, база сама тоже ведь файл. Файлы проиграют базе при сложных выборках + тут системный вызов идет, а его не очень хорошо давать юзерам.
Июл 05 at 23:38
Забавно конечно, но для более менее серьезных проектов файлы не применимы. Лучше озаботиться конфигурацией сервера и оптимизацией ОС.