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

Форум MySQL

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

 

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

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

тема: Выбор оптимального решения
 
 автор: t4f   (17.04.2007 в 12:07)   письмо автору
 
 

Есть многомерный массив из 10000 записей. Надо этот массив внедрить в базу. Как какое решение будет оптимальнее:
1. в цикле создаю отдельный запрос и 10000 раз вызываю mysql_query
2. в цикле прибавляю к строке запроса VALUES(...), после завершения цикла этот большой запрос передаю в mysql_query

   
 
 автор: Trianon   (17.04.2007 в 12:32)   письмо автору
 
   для: t4f   (17.04.2007 в 12:07)
 

2а. слово VALUES повторять не надо. между наборами нужно ставить запятую.

3. Компромисс в несколько сотен записей.

Объем запроса стоит уточнить соответственно размеру буфера запроса сервера.

   
 
 автор: t4f   (17.04.2007 в 14:12)   письмо автору
 
   для: Trianon   (17.04.2007 в 12:32)
 

3. Компромисс в несколько сотен записей.
нет, такой компромис не пройдет.
Объем запроса стоит уточнить соответственно размеру буфера запроса сервера.
Понятно, спасибо.

   
 
 автор: Trianon   (17.04.2007 в 14:24)   письмо автору
 
   для: t4f   (17.04.2007 в 14:12)
 

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

2. Блочный запрос выполняется гораздо (на порядки) быстрее потока одиночных.
Конечно, можно плюнуть на скорость и на загрузку ресурсов.... как минимум пока сверху не начнут давить ... тридцатисекундным ограничением, например.. или еще чем. Но...

Ничего не останется, как пойти на компромисс. Если конечно, не возникнут какие-либо серьезные контраргументы. Я их себе представить не могу.

Чисто интереса ради. Какие возникли у Вас?

   
 
 автор: t4f   (17.04.2007 в 14:37)   письмо автору
 
   для: Trianon   (17.04.2007 в 14:24)
 

Чисто интереса ради. Какие возникли у Вас?
xml, csv...

   
 
 автор: Trianon   (17.04.2007 в 14:43)   письмо автору
 
   для: t4f   (17.04.2007 в 14:37)
 

Это форматы файлов.
При чем тут способ формирования запросов?

   
 
 автор: t4f   (17.04.2007 в 19:25)   письмо автору
 
   для: Trianon   (17.04.2007 в 14:43)
 

Команда LOAD DATA INFILE другого оптимального варианта не вижу.

   
 
 автор: Trianon   (17.04.2007 в 19:59)   письмо автору
 
   для: t4f   (17.04.2007 в 19:25)
 

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

   
 
 автор: t4f   (17.04.2007 в 20:10)   письмо автору
 
   для: Trianon   (17.04.2007 в 19:59)
 

Дело в том, что данных очень много, более 10000 строк. И их необходимо загрузить за один раз. Компромиссов нет. Данные загружаются в базу один-два раза в день.

   
Rambler's Top100
вверх

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