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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 19:25   #11
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Сразу видно что Andkorol пишет сайты с максимумом посещений 30 человек в день и не представляет, как дорого обходиться работа с БД при более 2000 человек в день.
Что вам там "сразу видно" - ваше дело...
Одно то,что вам "дорого обходятся" 2000 посетителей в день - говорит о том,что советы mv28jam для вас также актуальны...
И тем не менее - на вопрос:
Цитата:
ЧЕМ запрос десятка текстовых строк так уж перегрузит сервер????
вы так и не ответили.

Высокая нагруженность проекта подразумевает оптимизацию запросов к БД,а также самой структуры БД - но не отказ от них.
Поэтому тут я полностью согласен с mv28jam - нужно учиться грамотно использовать БД - это решит большинство проблем,связанных с Базами.

Хотелось бы увидеть аргументированный ответ - потому что лично от вас уже не впервые вижу упрёки в ответах касательно нагруженности - и везде сплошная лирика,ничего конкретного.
Andkorol вне форума Ответить с цитированием
Старый 18.08.2010, 07:50   #12
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Одно то,что вам "дорого обходятся" 2000 посетителей в день - говорит о том,что советы mv28jam для вас также актуальны...
У Меня нет проблем с теорией БД.
Цитата:
Хотелось бы увидеть аргументированный ответ - потому что лично от вас уже не впервые вижу упрёки в ответах касательно нагруженности - и везде сплошная лирика,ничего конкретного.
Средние скорости работы:
- подключение к БД: 0.0002 сек.
- выполнение запроса к БД: 0.0002 сек.
- fetch запроса: 0.0002 сек.
- include: 0.0001 сек.
- обработка кода в 2000 знакомест: 0.0001 сек.
В итоге имеем:
- при использовании php-файла: include + текст*(объем знакомест кода/2000) = 0.0001 + 0.0001 ~ 0.0002 сек.
- при использовании БД: подключение к БД + выполнение запроса + fetch*(количество выбираемых строк) = 0.0002 + 0.0002 + 0.0002 ~ 0.0006 сек.
Andkorol, это простая математика и не надо тут умничать.
Виталий Желтяков вне форума Ответить с цитированием
Старый 18.08.2010, 08:28   #13
Nexta_s
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

таблиц две - одна для основного меню,
вторая для пунктов подменю.
ну и соответственно статьи.
100% будут случаи переноса пунктов подменю в другой раздел и "перемещения" статей по подменю...
Дальше все будет зависеть от реализации
Nexta_s вне форума Ответить с цитированием
Старый 18.08.2010, 11:48   #14
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
У Меня нет проблем с теорией БД.
А ваши же слова говорят об обратном (2000 / 24 / 60 = 1.39 чел/мин - сумасшедшая нагрузка - или это проблема с "простой математикой"?)...
Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Andkorol, это простая математика и не надо тут умничать.
Знаете,привести ряд цифр "с потолка" - не очень-то умный ход....
Увы - мы тут не "простой математикой" занимаемся,а программированием,потому кроме ваших ""реальных цифр"(допустим даже,что они объективны) - надо так же учитывать и необходимость наличия определённой гибкости при работе с Меню,а так же простоту реализации редактирования и изменения этого самого Меню.

ТС изначально спрашивал конкретный пример реализации - приведите его,пожалуйста,а так же ,если можно, укажите ,в чём его преимущество перед БД(учитывая то,что меню будет динамическим - т.е. постоянно может изменяться количество пунктов,их информация(названия,ссылки) - ну и опишите "удобный и простой" механизм для возможности внесения и фиксирования всех этих изменений в Меню).

При наличии подробного примера вашей реализации - мы просто сравним ваше решение с таким же по функционалу решением на БД - и закроем этот вопрос.

PS : при всём при этом вы даже не учитываете тот факт,что ТС только учится программировать на PHP - потому очень врядли пишет high-load приложение
А подгонять ВСЕ приложения под стандарты и критерии high-load - это слишком,ИМХО.
Тем более что high-load подразумевает не только(и не столько) программную оптимизацию приложения - но и в значительной степени аппаратную часть(взять хотябы тот же Twitter)
Andkorol вне форума Ответить с цитированием
Старый 18.08.2010, 22:38   #15
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
А ваши же слова говорят об обратном (2000 / 24 / 60 = 1.39 чел/мин - сумасшедшая нагрузка - или это проблема с "простой математикой"?)...
Простите за нескромный вопрос: Вы с принципом унитаза знакомы или у вашего унитаза полдюймовая дырка?
2000 человек в день - это значит, что пиковые нагрузки могут достигать 100-300 запросов в секунду.
Цитата:
Знаете,привести ряд цифр "с потолка" - не очень-то умный ход....
Это стандартные цифры, которые знает любой программист, который хоть раз задумывался об оптимизации. Эти цифры Вы можете свободно получить в трассировке xdebug-ом (если конечно знаете, что это такое) на локальном сервере.
Цитата:
надо так же учитывать и необходимость наличия определённой гибкости при работе с Меню,а так же простоту реализации редактирования и изменения этого самого Меню.
Не вижу никакой разницы в трудоёмкости между тем, что бы редактировать таблицы в базе, и тем, чтобы редактировать данные массива в php-файле. Конечно, если Вы всё пихаете в базу наплевав на оптимизацию, то Вам будет неудобно.
Цитата:
А подгонять ВСЕ приложения под стандарты и критерии high-load - это слишком,ИМХО.
Тем более что high-load подразумевает не только(и не столько) программную оптимизацию приложения - но и в значительной степени аппаратную часть(взять хотябы тот же Twitter)
Ну-ну, учимся с самого начала писать "быдлокод" и если что, сваливать на "плохую" железку.
Виталий Желтяков вне форума Ответить с цитированием
Старый 18.08.2010, 23:29   #16
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ясно - т.е. конкретного примера вашей реализации мы так и не дождёмся...
Ну я так и думал.
Спасибо за дискуссию.
Вопрос закрыт.

PS : "быдлокод" тут совершенно не при чём - в контексте темы нашего разговора...
Andkorol вне форума Ответить с цитированием
Старый 19.08.2010, 08:31   #17
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Ясно - т.е. конкретного примера вашей реализации мы так и не дождёмся...
Ну я так и думал.
Ясно дело не дождётесь. Я вам его представлю, то в итоге Вы скажете, что это не совсем то.

сообщение откорректировано согласно Правилам Форума //модератор

Последний раз редактировалось SkyM@n; 19.08.2010 в 09:35.
Виталий Желтяков вне форума Ответить с цитированием
Старый 19.08.2010, 11:31   #18
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Я вам его представлю, то в итоге Вы скажете, что это не совсем то.
Надо же - как вы хорошо меня знаете...)))

Зря вы так - мне правда интересно было бы взглянуть на такое решение,идея вполне может где-то и пригодится.
Не думайте,что раз я с вами спорю - то с целью высмеять вас и ваше решение.

Ваше решение вполне может оказаться интересным - вам бы нужно научиться спокойнее реагировать на споры и критику,и всё-таки доказывать свою правоту конкретными примерами, ибо факты - вещь упрямая.
Да и нестандартные решения стандартных задач - штука полезная,очень развивает.

Надеюсь-таки увидеть ваш пример - мне правда интересно.
Andkorol вне форума Ответить с цитированием
Старый 19.08.2010, 21:57   #19
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Пример:
- Вариант первый, получение массива данных меню из базы.
Дамп базы:
Код:
--
-- Структура таблицы `menu`
--

CREATE TABLE IF NOT EXISTS `menu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category` varchar(20) NOT NULL,
  `subcategory` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;

--
-- Дамп данных таблицы `menu`
--

INSERT INTO `menu` (`id`, `category`, `subcategory`) VALUES
(1, 'Категория 1', 'Подкатегория 11'),
(2, 'Категория 2', 'Подкатегория 21'),
(3, 'Категория 3', 'Подкатегория 31'),
(4, 'Категория 3', 'Подкатегория 32'),
(5, 'Категория 3', 'Подкатегория 33');
PHP-файл с трассировкой на локальной машине:
Код:
<?php
/****************************** Тестовый скрипт *******************************/
$database = mysql_connect ("-------", "-----","------");
mysql_select_db("------", $database);

mysql_query("set character_set_client	='cp1251'");
mysql_query("set character_set_results	='cp1251'");
mysql_query("set collation_connection	='cp1251_general_ci'");

//--------------------- Фунция извлечения данных о меню ----------------------//
function makemenuarray() {
	$query = "SELECT *
					FROM `menu`";
	$sql = mysql_query($query);
	if (mysql_num_rows($sql) > 0) {
		$menuarray = array();
		$row = mysql_fetch_assoc($sql);
		do {
			$menuarray[$row['subcategory']] = $row['category'];
		}
		while ($row = mysql_fetch_assoc($sql));
		
		return $menuarray;
	}
}
//----------------------------------------------------------------------------//

$array = makemenuarray();
/***************************** Трассировка файла *******************************
TRACE START [2010-08-19 17:39:58]
    0.0004     324060  +324060   -> {main}() /home/vita/-------/test.php:0
    0.0005     324332     +272     -> mysql_connect('------', '-----', '----') /home/vita/-----/test.php:3
                                   >=> resource(2) of type (mysql link)
    0.0009     324576     +244     -> mysql_select_db('----', resource(2) of type (mysql link)) /home/vita/-----/test.php:4
                                   >=> TRUE
    0.0011     324604      +28     -> mysql_query('set character_set_client\t=\'cp1251\'') /home/vita/------/test.php:6
                                   >=> TRUE
    0.0013     324604       +0     -> mysql_query('set character_set_results\t=\'cp1251\'') /home/vita/------/test.php:7
                                   >=> TRUE
    0.0015     324616      +12     -> mysql_query('set collation_connection\t=\'cp1251_general_ci\'') /home/vita/------/test.php:8
                                   >=> TRUE
    0.0017     324456     -160     -> makemenuarray() /home/vita/-------/test.php:27
    0.0017     324596     +140       -> mysql_query('SELECT *\n\t\t\t\t\tFROM `menu`') /home/vita/-------/test.php:14
                                     >=> resource(3) of type (mysql result)
    0.0019     324736     +140       -> mysql_num_rows(resource(3) of type (mysql result)) /home/vita/-------/test.php:15
                                     >=> 5
    0.0020     324736       +0       -> mysql_fetch_assoc(resource(3) of type (mysql result)) /home/vita/-------/test.php:16
                                     >=> array ('id' => '1', 'category' => 'Категория 1', 'subcategory' => 'Подкатегория 11')
    0.0021     325580     +844       -> mysql_fetch_assoc(resource(3) of type (mysql result)) /home/vita/bitva/test.php:20
                                     >=> array ('id' => '2', 'category' => 'Категория 2', 'subcategory' => 'Подкатегория 21')
    0.0022     325736     +156       -> mysql_fetch_assoc(resource(3) of type (mysql result)) /home/vita/bitva/test.php:20
                                     >=> array ('id' => '3', 'category' => 'Категория 3', 'subcategory' => 'Подкатегория 31')
    0.0023     325892     +156       -> mysql_fetch_assoc(resource(3) of type (mysql result)) /home/vita/bitva/test.php:20
                                     >=> array ('id' => '4', 'category' => 'Категория 3', 'subcategory' => 'Подкатегория 32')
    0.0024     326048     +156       -> mysql_fetch_assoc(resource(3) of type (mysql result)) /home/vita/bitva/test.php:20
                                     >=> array ('id' => '5', 'category' => 'Категория 3', 'subcategory' => 'Подкатегория 33')
    0.0025     326204     +156       -> mysql_fetch_assoc(resource(3) of type (mysql result)) /home/vita/bitva/test.php:20
                                     >=> FALSE
                                   >=> array ('Подкатегория 11' => 'Категория 1', 'Подкатегория 21' => 'Категория 2', 'Подкатегория 31' => 'Категория 3', 'Подкатегория 32' => 'Категория 3', 'Подкатегория 33' => 'Категория 3')
                                 >=> 1
    0.0029       8448
TRACE END   [2010-08-19 17:39:58]
*******************************************************************************/
?>
Виталий Желтяков вне форума Ответить с цитированием
Старый 19.08.2010, 21:57   #20
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

- Вариант второй, получение массива данных меню из php-файла.
PHP-фаил меню:
Код:
<?php
/****************************** Тестовый скрипт *******************************/

//--------------------- Фунция считывания данных о меню ----------------------//
function makemenuarray() {
	$menuarray = array();
	$menuarray['Подкатегория 11'] = 'Категория 1';
	$menuarray['Подкатегория 21'] = 'Категория 2';
	$menuarray['Подкатегория 31'] = 'Категория 3';
	$menuarray['Подкатегория 32'] = 'Категория 3';
	$menuarray['Подкатегория 33'] = 'Категория 3';
	
	return $menuarray;
}
//----------------------------------------------------------------------------//
?>
PHP-фаил (основной) с трассировкой на локальной машине:
Код:
<?php
/****************************** Тестовый скрипт 2 *****************************/
include 'menu.php';

$array = makemenuarray();
/***************************** Трассировка файла *******************************
TRACE START [2010-08-19 17:43:50]
    0.0003     317892  +317892   -> {main}() /home/vita/------/test 2.php:0
    0.0004     321260    +3368     -> include(/home/vita/bitva/menu.php) /home/vita/-----/test 2.php:3
                                   >=> 1
    0.0005     320712     -548     -> makemenuarray() /home/vita/--------/test 2.php:5
                                   >=> array ('Подкатегория 11' => 'Категория 1', 'Подкатегория 21' => 'Категория 2', 'Подкатегория 31' => 'Категория 3', 'Подкатегория 32' => 'Категория 3', 'Подкатегория 33' => 'Категория 3')
                                 >=> 1
    0.0008       8448
TRACE END   [2010-08-19 17:43:50]
*******************************************************************************/
?>
Как видите, по сложности исполнения практически никакой разницы, но при использовании БД на 5 пунктов меню тратиться 0.0029 сек. (с увеличением пунктов меню время будет расти), а с использованием php-файла тратиться 0.0008 сек. (при увеличении пунктов меню время расти не будет).
Надеюсь, выше приведённые доводы Вам понятны.
Виталий Желтяков вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP выборка из базы данных Olga38 Помощь студентам 0 20.12.2014 14:54
Проблема организации игровой базы... dukales БД в Delphi 18 28.06.2011 13:23
Подойдет ли MySQL для организации базы данных Аватар Софт 1 18.04.2011 03:17
PHP + Базы данных. Скрипт расписания. Zalim Фриланс 3 12.01.2011 14:34
Delphi 7 выбор организации базы данных Streamline БД в Delphi 3 16.08.2010 14:39