Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2009, 01:22   #1
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию Дерево на пхп или множество запросов в БД?

Делаю дерево - типа как проводник. Элементы тянутся с БД mysql.
Есть 2 варианта:
1. Один запрос в БД
Код:
select id, parent, name from content
и дальнейший разбор и построение дерева в пхп
2. Рекурсивная фукция которая будет давать запрос -
Код:
select id, parent, name from content where parent='$id'
в БД для каждого встречного элемента.

Допустим в таблице 1000 элементов, получится во втором случае прийдется дать 1000 запросов, а в первом 1 запрос. Допустим name+id+parent будет в среднем 15 байт * 1000 = 15 метров памяти.

С точки зрения производительности что будет менее накладно для сервера? - интересует как потребление памяти так и заргузка процессора. Выполнить 1 запрос или несколько(1-10000)?
Может у вас есть предложения по реализации дерева другим образом?
Дерево смотрится красиво, но вот жертва по производительности мне кажется очень высокой. Хоть может для текущего серверного железа, ему не составит труда обрабатывать такую порцию данных - вот этого не знаю =)

PS: есть идея формировать не всё дерево сразу, а только ту часть, которую я на данный момент вижу. А по клику на "+" аяксом подгружать элементы. Нагрузка спадет, но все равно чтобы нарисовать или не нарисовать +, нужно знать содержится ли в этом разделе раздел. А это в любом случае запрос. Получится количество запросов = количеству видимых элементов. Примерно может достигать до 50-100 запросов максимум.
Менюшка используется в админ панели, т.е. с ней будет работать 2-3 человека одновременно максимум.
iankov вне форума Ответить с цитированием
Старый 08.03.2009, 08:27   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

лично я для таких случаев использую один прямой запрос (select * from table), а потом уже разбираю возвращенный результат в многомерный массив рекурсивной php-функцией... насколько я знаю - самый производительный вариант

1000 запросов будут идти гораздо дольше чем 1 запрос любой сложности, могли бы заметить это опытным путем



также здесь будет очень уместно кеширование дерева
свободен...
wall66 вне форума Ответить с цитированием
Старый 08.03.2009, 09:00   #3
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Честно говоря не пробовал 1000 запросов сравнивать с одним большим =)

Кеш это хорошо. Его можно обновить например при добавлении нового объекта, но а если в случае, когда несколько пользователей одновременно работают. Допустим сижу я в админке, перелистываю дерево, и тут ктото добавляет новый элемент с другого компьютера, а у меня все еще будет старое не обновленное дерево в кеше, хотя желательно его обновить. Но как догадаться что что-то было добавлено или изменено в БД?

Спасибо за ответ.
iankov вне форума Ответить с цитированием
Старый 08.03.2009, 09:25   #4
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от iankov Посмотреть сообщение
как догадаться что что-то было добавлено или изменено в БД?
просто удалить (очистить) кеш при добавлении/изменении записи в базе
свободен...
wall66 вне форума Ответить с цитированием
Старый 08.03.2009, 16:55   #5
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

А, да, все норм насчет кеша.
И насчет памяти я прогнал 15*1000 будет 15кб а не мб, теперь я спокоен, а то боялся за потребление памяти
iankov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно написать прогу на пхп. Плачу. razrushitel Фриланс 1 07.03.2009 14:30
счетчик на ПХП! inetexer Помощь студентам 4 08.05.2008 17:18
Нужна помощь по скрипту ПХП (опрос) Юрий777 PHP 11 20.02.2008 23:45