Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: query-фобия или боязнь большого кол-ва запросов
 
 автор: PantiL   (25.10.2006 в 15:57)   письмо автору
 
 

Люди, помогите избавиться от боязни сделать лишний запрос к базе данных, почему то у меня в мозгу засела мысль, что запрос к серверу баз данных это сильнейший тормоз и я постоянно сижу и ломаю голову как бы обойтись меньши кол-овм запросов.
Скользко запросов максимально (вернее не желательно использовать больше) возможно при генерации страницы.
Каково максимально допустимое время выполнения скрипта (не из расчета настроек php а из usability )

   
 
 автор: cheops   (25.10.2006 в 16:03)   письмо автору
 
   для: PantiL   (25.10.2006 в 15:57)
 

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

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

   
 
 автор: bratik   (26.10.2006 в 19:00)   письмо автору
 
   для: cheops   (25.10.2006 в 16:03)
 

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

   
 
 автор: cheops   (26.10.2006 в 20:54)   письмо автору
 
   для: bratik   (26.10.2006 в 19:00)
 

>В каждом конкретном случае нужно смотреть,
Согласен
>чаще всего один грамотно написанный запрос лучше чем много мелких
На счёт того, что такая ситуация возникает часто не согласен

   
 
 автор: Lelik   (25.10.2006 в 16:05)   письмо автору
 
   для: PantiL   (25.10.2006 в 15:57)
 

на каком-то сайте видел: 14 запросов к БД - генерация страницы - доли секунды, точно не помню, но менее половины (n < 0, 5 сек) это точно

   
 
 автор: Loki   (25.10.2006 в 16:26)   письмо автору
 
   для: Lelik   (25.10.2006 в 16:05)
 

даже страшно спрашивать сколько у вас:)

   
 
 автор: Lelik   (25.10.2006 в 17:18)   письмо автору
 
   для: Loki   (25.10.2006 в 16:26)
 

это вы у меня спрашиваете? не более 10 на странице ;) а вообще я за РНР уже более месяца не сидел

   
 
 автор: JIEXA   (27.10.2006 в 09:38)   письмо автору
 
   для: Lelik   (25.10.2006 в 17:18)
 

Не люблю хвастатся, но у нас главная otvali.ru генерируется за 0.09225 с и 4 запроса в БД:) Кеширования нету =)

   
 
 автор: Unkind™   (27.10.2006 в 00:42)   письмо автору
 
   для: Lelik   (25.10.2006 в 16:05)
 

на каком-то сайте видел: 14 запросов к БД - генерация страницы - доли секунды, точно не помню, но менее половины (n < 0, 5 сек) это точно
Вы считаете это быстро? :)

А mysql_query()-фобию надо исправлять иногда и скриптами на файлах...Я не любитель этого дела, но иногда просто без этого не обойтись...Ведь все данные в таблице в одном файле, а если, скажем, у вас какой-то крутой рейтинг и очень посещаемый сайт, то ваша база полетит...
Тут придется для каждого аккаунта делать свой файл - ведь обращение к маленькому файлу будет намного "легче"...:)

   
 
 автор: cheops   (27.10.2006 в 01:00)   письмо автору
 
   для: Unkind™   (27.10.2006 в 00:42)
 

>Вы считаете это быстро? :)
Да, так как время загрузки страницы, как правило, выше и время генерации не является лимитирующим.

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

   
 
 автор: Unkind™   (27.10.2006 в 01:52)   письмо автору
 
   для: cheops   (27.10.2006 в 01:00)
 

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


<?php
include("headers");

$id intval($_GET['id']);

$fd fopen("/home/site/top.site.ru/www/accounts/".$id."/".$id.".dat""r");
$data fgets($fd);
fclose($fd);

//И т.д.

include("footer");
?>


А если сделать это на MySQL, когда в базе таких аккаунтов тысячи и каждую секунду несколько десятков обращений одновременно? Ведь, повторюсь, там все аккаунты будут в одной таблице, в одном файле...

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

А в остальных случаях лучше на файлах постараться...

Между прочим, я заметил, что DDoS легче на скрипты с использованием MySQL делать...=(

   
 
 автор: cheops   (27.10.2006 в 13:48)   письмо автору
 
   для: Unkind™   (27.10.2006 в 01:52)
 

>:) Я же говорю про отдельный файл для каждого аккаунта...
В MySQL тоже можно так поступать - создавая отдельную таблицу под каждого из пользователей, ведь таблица - это тот же файл, только бинарный.

>Между прочим, я заметил, что DDoS легче на скрипты с использованием MySQL делать...=(
Есть такое дело, за удобства, которые предоставляет MySQL следует расплачиваться процессором и памятью - это бич всех баз данных.

   
 
 автор: Unkind™   (27.10.2006 в 15:04)   письмо автору
 
   для: cheops   (27.10.2006 в 13:48)
 

В MySQL тоже можно так поступать - создавая отдельную таблицу под каждого из пользователей, ведь таблица - это тот же файл, только бинарный.
А потом в phpMyAdmin с тысячами таблиц работать...:))

   
 
 автор: cheops   (27.10.2006 в 15:05)   письмо автору
 
   для: Unkind™   (27.10.2006 в 15:04)
 

Точно также как через FTP с тысячами файлов :)))

   
 
 автор: Unkind™   (27.10.2006 в 15:11)   письмо автору
 
   для: cheops   (27.10.2006 в 15:05)
 

Не...FTP все в одной папочке будет, туда и можно не лезть, да и поиск удобнее, если уж надо...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования