|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.03.2009, 01:22 | #1 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
Дерево на пхп или множество запросов в БД?
Делаю дерево - типа как проводник. Элементы тянутся с БД mysql.
Есть 2 варианта: 1. Один запрос в БД Код:
2. Рекурсивная фукция которая будет давать запрос - Код:
Допустим в таблице 1000 элементов, получится во втором случае прийдется дать 1000 запросов, а в первом 1 запрос. Допустим name+id+parent будет в среднем 15 байт * 1000 = 15 метров памяти. С точки зрения производительности что будет менее накладно для сервера? - интересует как потребление памяти так и заргузка процессора. Выполнить 1 запрос или несколько(1-10000)? Может у вас есть предложения по реализации дерева другим образом? Дерево смотрится красиво, но вот жертва по производительности мне кажется очень высокой. Хоть может для текущего серверного железа, ему не составит труда обрабатывать такую порцию данных - вот этого не знаю =) PS: есть идея формировать не всё дерево сразу, а только ту часть, которую я на данный момент вижу. А по клику на "+" аяксом подгружать элементы. Нагрузка спадет, но все равно чтобы нарисовать или не нарисовать +, нужно знать содержится ли в этом разделе раздел. А это в любом случае запрос. Получится количество запросов = количеству видимых элементов. Примерно может достигать до 50-100 запросов максимум. Менюшка используется в админ панели, т.е. с ней будет работать 2-3 человека одновременно максимум. |
08.03.2009, 08:27 | #2 |
Участник клуба
Регистрация: 04.10.2008
Сообщений: 1,485
|
лично я для таких случаев использую один прямой запрос (select * from table), а потом уже разбираю возвращенный результат в многомерный массив рекурсивной php-функцией... насколько я знаю - самый производительный вариант
1000 запросов будут идти гораздо дольше чем 1 запрос любой сложности, могли бы заметить это опытным путем также здесь будет очень уместно кеширование дерева свободен... |
08.03.2009, 09:00 | #3 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
Честно говоря не пробовал 1000 запросов сравнивать с одним большим =)
Кеш это хорошо. Его можно обновить например при добавлении нового объекта, но а если в случае, когда несколько пользователей одновременно работают. Допустим сижу я в админке, перелистываю дерево, и тут ктото добавляет новый элемент с другого компьютера, а у меня все еще будет старое не обновленное дерево в кеше, хотя желательно его обновить. Но как догадаться что что-то было добавлено или изменено в БД? Спасибо за ответ. |
08.03.2009, 16:55 | #5 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
А, да, все норм насчет кеша.
И насчет памяти я прогнал 15*1000 будет 15кб а не мб, теперь я спокоен, а то боялся за потребление памяти |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно написать прогу на пхп. Плачу. | razrushitel | Фриланс | 1 | 07.03.2009 14:30 |
счетчик на ПХП! | inetexer | Помощь студентам | 4 | 08.05.2008 17:18 |
Нужна помощь по скрипту ПХП (опрос) | Юрий777 | PHP | 11 | 20.02.2008 23:45 |