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

Форум MySQL

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

 

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

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

тема: О быстродействии базы данных
 
 автор: Владимир55   (16.02.2009 в 12:04)   письмо автору
 
 

Когда говорят о достоинствах использования базы данных по сравнению с файлами, то основным аргументом выставляется тот факт, что сервер управления базой написан на С++ и потому очень быстро производит запись/чтение с винчестера, тогда как рнр пропускает эти операции через интерпретатор.

Веоятно, так оно и есть.

Но чем больше я знакомлюсь с возможностями сервера управления базой, тем сильнее впечатление, что и здесь имеет место интерпретирующий язык, обрабатывающий колоссальное количество всяких вариантов обращения к данным. Так что само время связи с винчестером по своему значению отступает на сто первое место...
К тому же, общение с базой требует дополнительных операторов рнр.

Удобство базы несомненно, а вот выигрыш по быстродействию - это вряд ли.

  Ответить  
 
 автор: Axxil   (16.02.2009 в 12:14)   письмо автору
 
   для: Владимир55   (16.02.2009 в 12:04)
 

> а вот выигрыш по быстродействию

Я так понимаю речь идёт про выигрыш по сравнению с чистыми файлами?

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

Результат будет интересный.

  Ответить  
 
 автор: Valick   (16.02.2009 в 12:42)   письмо автору
 
   для: Владимир55   (16.02.2009 в 12:04)
 

У Вас немного неверное представление о назначении базы данных.
Если её использовать только для хранения данных, то несомненно в быстродействии вы проиграете. Код с базой и код с файлами координально отличаются даже если делают одно и тоже, а не только теми строками в которых происходит обращение к базе или к файлу. В идеале при использовании БД РНР нужен только для оформления ввода и вывода, всё остальное нужно стремиться сделать средствами СУБД которые как раз и написаны на Си.

  Ответить  
 
 автор: cheops   (16.02.2009 в 12:52)   письмо автору
 
   для: Valick   (16.02.2009 в 12:42)
 

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

  Ответить  
 
 автор: cheops   (16.02.2009 в 12:49)   письмо автору
 
   для: Владимир55   (16.02.2009 в 12:04)
 

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

  Ответить  
 
 автор: Владимир55   (16.02.2009 в 13:11)   письмо автору
 
   для: cheops   (16.02.2009 в 12:49)
 

Логично.

Что же касается удобства, то это просто фантастика: то, что на файлах я делал больше месяца и отлаживал столько же, с базой как на ладони! Алгоритм накопления и обработки стал совершенно другой - более простой и наглядный, а скрипт анализа статистики получается настолько универсальным, что мне его будет легко распространить и на другие свои сайты.

Хотя есть и дополнительная сложность: если при сохранении в файлах отслеживать результаты (при настройке) можно путем просматривания обычным менеджером файлов, то при использовании базы требуется отладочный стенд...

  Ответить  
 
 автор: cheops   (16.02.2009 в 13:15)   письмо автору
 
   для: Владимир55   (16.02.2009 в 13:11)
 

>Хотя есть и дополнительная сложность: если при сохранении в файлах отслеживать
>результаты (при настройке) можно путем просматривания обычным менеджером файлов, то
>при использовании базы требуется отладочный стенд...
К сожалению, все имеет свою цену, в качестве ещё одного минуса - для эффективной работы, разработчик вынужден изучать дополнительный язык программирования - SQL.

  Ответить  
Rambler's Top100
вверх

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