Forum Webscript.Ru

Программирование => PHP => Тема начата: Uzver от 21 Августа 2006, 18:15:45

Название: ОЗУ или база?
Отправлено: Uzver от 21 Августа 2006, 18:15:45
вопрос немного нестандартный, что лучше для сервера, в плане что вызовет меньшую нагрузку, сделать десяток коннекций к мускулю? или выбрать все одной коннекцией и загрузить данные в ОЗУ с коим дальше и работать? для одной страницы может грузиться до 2 мегов инфы (конечно это довольно редкие ситуации, но все же они есть). то что по скорости работа с ОЗУ быстрее это понятно, вопрос в том какой из методов вызовет меньшую нагрузку на сервер?
ессесно что все писано на пхп ))
Название: ОЗУ или база?
Отправлено: vasa_c от 21 Августа 2006, 18:18:13
"коннекция" будет одна, запросов в ее рамках может быть несколько.

Вообще ответ на данный вопрос сильно зависит от контекста задачи. Обрисуешь может быть?
Название: ОЗУ или база?
Отправлено: Uzver от 21 Августа 2006, 18:27:03
Цитировать
Uzver:
"коннекция" будет одна, запросов в ее рамках может быть несколько.

пардон, апшипся, одна коннекция множество выборок ))
хотя когда-то сталкивался с методом коннекция, выборка, конец коннекции, и так при каждом запросе ))
задача достаточно проста, генерация страниц сайта, проблема в том что страниц этих уже несколько тысяч и при генерации многих страниц необходимо выдать ссылки на тематически схожие страницы, тоесть нужно пробежаться по всему дереву сайта и посмотреть что схоже что нет. (связанные таблицы). плюс сам контент страницы. в результате при генерировании страницы таких обращений к базе до нескольких десятков. Вот собственно и вопрос, стоит ли сразу выбрать всю/все таблицу и закинуть ее/их положим в массив и дальше уже работать с массивом, или все же лучше оставить множество запросов к базе?
Название: ОЗУ или база?
Отправлено: Greg от 22 Августа 2006, 07:19:43
однозначно работать с базой, а потом уже полученные результаты просто выводить. в массив выливать смысла особого нет, да и SQL с подобными задачами ИМХО работает лучше
Название: ОЗУ или база?
Отправлено: AlieN от 22 Августа 2006, 15:16:25
Если хорошая посещаемость, то частоиспользуемые данные из базы логичнее держать в памяти, ну и есесьно динамически выгружать ненужное (допустим инфа о юзерах онлайн) или последних сообщениях в чате.
Название: ОЗУ или база?
Отправлено: vasa_c от 22 Августа 2006, 15:58:41
AlieN, а как их там держать?
Название: ОЗУ или база?
Отправлено: Uzver от 22 Августа 2006, 16:22:24
Цитировать
AlieN:
Если хорошая посещаемость, то часто используемые данные из базы логичнее держать в памяти, ну и есесьно динамически выгружать ненужное

проблема в том что сервер слабоват (Athlon 64 3000+ 686-class 512М) а ставить новый пока не рентабельно, мускуль висит на нем же. запросов сейчас порядка 10 - 13 тыс. в день, без учета роботов, и наблюдается постоянный рост. пробовал грузить данные в память и работать так, стали быстрее генерироваться страницы, но... сервер периодически стал "подвисать" в зависимости от времени суток он как бы залипает на минуту две потом опять возвращается в норму. доступа к средствам мониторинга к сожалению нет, чтобы накопить статистику, отсюда и вопрос.

Цитировать
vasa_c:
AlieN, а как их там держать?
средствами пхп это помоеум не реализуемо, но например на си это довольно легко, в данном случае предполагается что все данные которы могут понадобится выбираются из базы за один максимум два запроса и сваливаются в массив с которым и ведется дальнейшая работа.
Название: ОЗУ или база?
Отправлено: AlieN от 27 Августа 2006, 13:27:34
Shared Memory для этого придумали.....
http://ru.php.net/manual/en/ref.shmop.php
+ кронтабом раз в 2-3-4-5 минут чистить ненужную инфу.


Uzver
Протоколируй error_log у апаче, чтобы пхп туда ошибки клал, сделай лимит на исполнение скриптов, подключись к базе через phpmyadmin и регулярно смотри show processlist
Также сделай EXPLAIN всех частых запросов к базе, добавь индексов...старайся оботись без тепорари тейбл.....

Пока не ставишь новый сервер, можешь установить отдельный винт на базу....



Ваще решений может быть куча...., может быть просто тебя ДОСят