Forum Webscript.Ru

Программирование => PHP => Тема начата: Nicki от 26 Марта 2006, 13:09:57

Название: что быстрее MySQL или файлы?
Отправлено: Nicki от 26 Марта 2006, 13:09:57
Вопрос и по мускулю и по файлам, поэьтому постю сюда. Меня интерисует вопрос скорости выполнения операции выборки. Ситуация такая. Скрипт поддерживает несколько языков - инглишь, русиш, франсиш и т.д.. Возникает необходимость добавлять новые записи на этих нескольких языках (список категорий, разделов сайта, статей и т.д.). Есть два варианта: БД и файлы. Файлы реализовать проще, НО никто не захочет лизить по lang-файлам и добавлять новые элементы в массив сообщениями. В тоже время меня мучают сомнения что загрузка и подключение  массива из файла будет быстрее выборки из БД.
Вот мне и хотелось бы узнать  интерисует что будет быстрее и насколько. Допустив что нужно подключить\\загрузить несколько файлов\\запросов:
- общие сообщения для всех модулей
- сообщения конкретного модуля

таблица примерно такая
id          int unsigned NOT NULL auto_increment,
languageId  int unsigned NOT NULL default \'1\',
moduleId    int unsigned NOT NULL default \'1\',
langMark    varchar(32) NOT NULL default \'\',
message     text NOT NULL default \'\',
PRIMARY KEY (id),
UNIQUE _languageId_langMark (languageId,langMark)

файл
$msg[\'repeateSendAct\'] = \'\';
$msg[\'regNotConfirmed\'] = \'\';
... и т.д.
Название: что быстрее MySQL или файлы?
Отправлено: for_i_0 от 26 Марта 2006, 13:16:29
ИМХО Mysql будет работать быстрее за исключением случая если в конечном итоге придется непосредственно работать с бинарными файлами.
Цитировать
Nicki:
Название: что быстрее MySQL или файлы?
Отправлено: Nicki от 26 Марта 2006, 13:22:57
т.е. в моем случае мускуль все таки предпочтительнее по скорости, да? Даже если учитывать что в файле подключается уже готовый массив, который просто array_merge() с уже ранее подключенным массивом сообщений, а с мускулем еще надо разобрать возвращенный ресурс, сохранив все в массив.
Название: что быстрее MySQL или файлы?
Отправлено: for_i_0 от 26 Марта 2006, 14:41:18
Nicki
погоди, с помощу чего ты формируешь массив в файл ?
Название: что быстрее MySQL или файлы?
Отправлено: Nicki от 26 Марта 2006, 16:12:09
пока что руками добавляю во все файлы Lang строки типа

$msg[\'mark1\'] = \'Message text\';
$msg[\'mark2\'] = \'Message text 2\';

но заказчику такая головная боль не нужна, поэтому придется делать с базой. А если файлом все таки быстрее работает, чем запросом, то придется ухитрится как то ... написать парсер из бд в файлы и их потом подключать, чтоб и волки были сыты и овцы целы :)) но опять же гимор.
Название: что быстрее MySQL или файлы?
Отправлено: for_i_0 от 26 Марта 2006, 18:50:31
Nicki
Я бы наверное все данные хранил в БД. Таким образом мне бы не пришлось беспокоится на счет скорости выполнения скрипта.

[OFF]или же мне просто не приходилось хранить данные в файлах. Зачем хранить данные в файлах если для этого есть такой мощный интсрумент как БД[/OFF]
Название: что быстрее MySQL или файлы?
Отправлено: Nicki от 26 Марта 2006, 18:57:05
делюсь своими тестами. В общем тест такой:
- выполняется 1 секунду
- для файлов идет загрузка 4 файлов содержащим одним массив из строк который после инклюда прикрепляется к уже загруженным массивам из других файлов, т.е. все сваливаем в кучу $messages = $messages + $msg;
- для бд в каждой итерации происходил запуск 4 запросов к тем же данным что и в файлах, но уже занесенным в бд, и сохранение всех выборок в кучу. while ($arr = $result->FetchRow()) $messages[$arr[0]] = $arr[1];
- в начале всех итераций массив $messages сбрасывался
- итоговый массив в $messages конце каждой итерации насчитывал около 100 элементов
- для доступа к бд использовалась ADODB
- файлы инклюдились инструкцией include

средние результаты:
fileTest took 340 iterations/sec
dbTest took 180 iterations/sec

В общем, можно канать на ADO, но в крупных проектах слой доступа к данным необходим, поэтому вывод один - кешируйте обращения к БД где это возможно, если вопрос производительности стоит достаточно остро.
Название: что быстрее MySQL или файлы?
Отправлено: Nicki от 26 Марта 2006, 19:01:52
for_i_0
Иногда проще хранить в файлах, т.к. легко можно отредактировать любую его часть просто в текстовом редакторе, а вообще согласен, что бд необходимо применять везде где только возможно.
Название: что быстрее MySQL или файлы?
Отправлено: for_i_0 от 26 Марта 2006, 20:48:21
Цитировать
Nicki:
легко можно отредактировать любую его часть

тоже самое можно сказать о CMS. Ведь практически любое написания веб-приложений начинается именно с администрационной части.