Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Что быстрее
Форумы портала PHP.SU » » Работа с СУБД » Что быстрее

Страниц (1): [1]
 

1. Еугений - 27 Декабря, 2012 - 23:06:51 - перейти к сообщению
Вот такой вопрос возник.
Решил на каждой странице сайта где нибудь разместить блок "последние три новостя сайта".
Сначала хотел просто в той части сделать запрос в бд.
Но потом пришла мысль - всякий раз при редактировании/добавлением статьи записывать/редактировать в обычный текстовый файл последнии новости. И вместо запроса в бд считывать с текстового файла определенным образом.
В самом деле, зачем постоянно напрягать бд, если новости редко добавляются? Хочу услышать ваше мнение.
2. avtor.fox - 27 Декабря, 2012 - 23:09:20 - перейти к сообщению
Еугений
Вы знаете разницу между базой данных и файлами?
(оперировать с такой информацией гораздо легче в базе данных)
3. Еугений - 27 Декабря, 2012 - 23:11:50 - перейти к сообщению
avtor.fox не знаю. Просто мне кажется что функция fread более быстрей чем select
4. LIME - 27 Декабря, 2012 - 23:16:44 - перейти к сообщению
вполне здравая мысль
кэшируем если нет кэша
и удаляем кэш при добавлении
только вот база тоже кеширует
к томуже запрос легкий
прирост будет но незначительный имхо
5. OrmaJever - 27 Декабря, 2012 - 23:19:55 - перейти к сообщению
Во-первых быстрее создать одну тему место двух.
во-вторых чтение с файла конешно быстрее, но скорее всего вы не сможите отследить изменения в бд.
6. Еугений - 27 Декабря, 2012 - 23:22:43 - перейти к сообщению
OrmaJever пишет:
Во-первых быстрее создать одну тему место двух.
во-вторых чтение с файла конешно быстрее, но скорее всего вы не сможите отследить изменения в бд.

насчет темы случайно вышло Улыбка
что значит не смогу отследить изменения? Изменения только тогда, когда я, админ, добавляю статьи и редактирую. Сразу же после этого файл будет редактироваться, в сценарии код будет соответствующий, сразу после инсерта или апдейта
7. LIME - 27 Декабря, 2012 - 23:26:17 - перейти к сообщению
а что сложного отследить изменение?
онож в админке происходит
вот при инсерте и удалять кэш
только это миллисекунды в +
8. Саныч - 28 Декабря, 2012 - 00:48:04 - перейти к сообщению
LIME, ну все же +. Тут +, там + в итоге получили ускорение Улыбка
9. master_alf - 28 Декабря, 2012 - 08:33:15 - перейти к сообщению
ИМХО, чтение из файла при каждой загрузке страницы - это сомнительный выигрышь. Даже если функция чтения быстрее, чем получение данных из БД, лишние обращения к винту, по идее, не есть гут. А если кэшировать результат и держать его, до изменения данных в файле - не всё ли равно, откуда они будут браться один раз? При таком раскладе, если весь остальной контент берется из базы, мне кажется нецелесообразным хранить новости в файле.

Всё, конечно же, ИМХО.
10. LIME - 28 Декабря, 2012 - 10:16:28 - перейти к сообщению
master_alf ну да...бд кэширует результат в памяти
однако и фс тоже это делает
тут хз...мерить надо наверное
11. sKaa - 28 Декабря, 2012 - 10:27:26 - перейти к сообщению
master_alf пишет:
... чем получение данных из БД, лишние обращения к винту, по идее, не есть гут.

Послушайте, а по-вашему зашифрованные данные из таблиц баз данных хранятся не на винте, а вакууме?
Обращение к винту будет в любом случае если выбирать между файлом и такими БД как mysq, postgree итд. Это конечно не суть. Тоже ИМХО, конечно же...
12. master_alf - 28 Декабря, 2012 - 10:31:12 - перейти к сообщению
sKaa
Странный тон... я, что вас оскорбил чем-то?

Данные в БД хранятся, естественно, в виде файлов на винте. Но в БД есть внутренний кэш, часть данных хранится в оперативной памяти и т.д. Иначе зачем вся эта надстройка в виде Сервера БД над файлами, где данные хранятся? Для удобства и оперативной работы, не так ли?
13. sKaa - 28 Декабря, 2012 - 10:36:47 - перейти к сообщению
В оперативной памяти там, насколько мне известно, хотя могу и ошибиться, храниться только результат обработки последнего запроса. Нужно же его где-то хранить перед тем как вернуть и желательно где-нибудь не в файле.
Собственно и скрипт php загружая строки из файла хранит их в оперативке.

Всё зависит от того, какая у автора стоит задача.
Если ему нужно хранить в файле набор единичек и нулей - быстрее будет файл.
14. master_alf - 28 Декабря, 2012 - 10:38:04 - перейти к сообщению
LIME пишет:
master_alf ну да...бд кэширует результат в памяти
однако и фс тоже это делает
тут хз...мерить надо наверное

Я одно время так же задавался очень сильно вопросом оптимизации кода, когда количество стало переходить в качество... и один опытный товарищ, у которого я часто консультировался, процитировал мне кого-то из именитых программистов. "Если бы на первом месте стояла экономия ресурсов, то мы бы до сих пор все писали только на Си". Всё-таки такие языки как PHP, созданы не для ОМГ быстроты, а для удобства и скорости разработки. Я бы исходил из этого. Выигрыш в наносекунду - это, конечно, хорошо, но когда на то, что бы понять "а будет ли здесь этот выигрыш" тратится несколько дней на обсуждение - думаю, это бесполезно. Когда оба варианты достаточно хороши, лучше использовать тот, который будет более читабельным и удобным в данном контексте. Вот мое мнение. Улыбка
15. Zuldek - 28 Декабря, 2012 - 11:00:14 - перейти к сообщению
Евгений, скоро придете к мысли, что если хранить результат запроса в виде массива в php файле cash.php, то это вообще будет сказка Улыбка
Рациональность зависит от частоты запросов и нагруженности сервера баз данных. Всегда можно посмотреть будет-ли кешироваться запрос СУБД или не будет. Если будет - отдавайте с бд.

 

Powered by ExBB FM 1.0 RC1