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

Разное

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

 

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

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

тема: Прогнозирование времени занесения информации в базу данных
 
 автор: Владимир55   (07.11.2012 в 22:31)   письмо автору
 
 

Чем больше записей уже имеется в базе данных, тем медленнее идет процесс добавления.

В таблице приведены количество записей (левая колонка) и время в секундах для их занесения.

Как на основании этих сведений оценить время, которое потребуется для занесения одного миллиона записей? Полутора миллионов записей?

50000 1230
100000 2940
150000 5170
200000 8110
250000 11320
300000 15220
350000 19450
400000 24610
450000 30430
500000 36730
550000 44050
600000 51730

  Ответить  
 
 автор: cheops   (08.11.2012 в 07:32)   письмо автору
 
   для: Владимир55   (07.11.2012 в 22:31)
 

Вы во время обновления индексы отключаете? Таблицу блокируете? Время обновления сильно зависит от того, куда заносятся данные... более того, на больших системах с миллиардами записей для записи выделяют отдельный сервер (master), с которого вообще никогда никто ничего не читает (SELECT), данные с него распространяются при помощи репликации на подчиненные сервера (slave), с них уже осуществляется чтение, таблицы в них индексированы. На master-сервере все индексы отключены - это существенно ускоряет запись, так как не нужно сортировать индекс каждый раз при вставке нового значения (а файлы индексов могут достигать довольно большого размера - это кстати минус и за этим нужно следить, чтобы их размер оставался не очень большим, иначе пользы от индексирования будет не много).

  Ответить  
 
 автор: Владимир55   (08.11.2012 в 10:30)   письмо автору
 
   для: cheops   (08.11.2012 в 07:32)
 

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

А в данном случае импорт идет в базу типовой CMS. Как они ею управляют, я не знаю. Блокируют ли, отключают ли индексы - неизвестно.

Меня удивляет огромное время записи. Планируется импортировать полтора миллиона строк, но процесс идет так долго, что я даже не могу его протестировать. Вот и приходится строить гипотезы...

Реально закачал 600 тысяч записей, на что ушло 51730 секунд, а размер бызы получился 300,1 Мб. До плутора миллионов решил тестовый дамп не качать, а просто прикинуть на основании предшествующих записей, сколько на это уйдет времени.

  Ответить  
 
 автор: Sfinks   (08.11.2012 в 11:37)   письмо автору
34.5 Кб
 
   для: Владимир55   (08.11.2012 в 10:30)
 

Не знаю на сколько верно такое предположение, но.....
Если предположить, что время добавления каждых 50000 записей возрастает в равномерной геометрической прогрессии....
То в приведенных данных каждые новые 50000 добавляются в среднем на 18,595% времени дольше, чем предыдущие....
Следовательно, при добавлении 1,5 млн. записей (подключаем эксель), последние 50000 будут добавляться 165408,5 секунд, а общее время добавления всех 1,5млн составит 1057688 секунд или 12 суток, 5 часов и еще с копейками.
_______
Экселевский файл во вложении.

  Ответить  
 
 автор: Владимир55   (08.11.2012 в 12:11)   письмо автору
 
   для: Sfinks   (08.11.2012 в 11:37)
 

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

Спасибо за анализ!

  Ответить  
 
 автор: Sfinks   (08.11.2012 в 19:25)   письмо автору
 
   для: Владимир55   (08.11.2012 в 12:11)
 

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

  Ответить  
 
 автор: Владимир55   (08.11.2012 в 19:59)   письмо автору
 
   для: Sfinks   (08.11.2012 в 19:25)
 

Доступ к БД есть.

Проиндексированную базу я полностью удалил и все установил заново, так что приведенные данные относятся к непроиндексированной базе.

Просто она такая мудреная и потому медленная.

  Ответить  
 
 автор: Sfinks   (09.11.2012 в 11:24)   письмо автору
 
   для: Владимир55   (08.11.2012 в 19:59)
 

Я про структуру БД...
Например если в базе есть таблица
CREATE TABLE `catalog` (
  `id_catalog` int(11) NOT NULL,
  `name` tinytext NOT NULL,
  PRIMARY KEY (`id_catalog`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251
, то ее индекс будет обновляться по мере добавления данных, после каждого оператора INSERT, что заметно замедлит процесс.

Но если сперва выполнить
ALTER TABLE catalog DROP PRIMARY KEY
, т.е. удалить индекс, то вставка будет вестись без индексирования и быстро. А после окончания вы проиндексируете базу один раз командой
ALTER TABLE `catalog` ADD PRIMARY KEY ( `id_catalog` ) ;
, чем вернете структуру в исходное состояние.

Надеюсь, cheops меня поправит, если я не прав.

  Ответить  
 
 автор: Владимир55   (09.11.2012 в 12:35)   письмо автору
 
   для: Sfinks   (09.11.2012 в 11:24)
 

Интересная идея! Надо попробовать...

  Ответить  
 
 автор: cheops   (08.11.2012 в 23:26)   письмо автору
 
   для: Владимир55   (08.11.2012 в 10:30)
 

>А в данном случае импорт идет в базу типовой CMS.
В Bitrix? В инфоблоки? Или уже другую CMS используете?

  Ответить  
 
 автор: Владимир55   (09.11.2012 в 09:21)   письмо автору
 
   для: cheops   (08.11.2012 в 23:26)
 

Я гоняю всех трех лидеров - и Битрикс, и HostCMS, и UMI.CMS. В этом отношении они примерно одинаковые, но Битрикс самый тормозной и малохольный (по импорту).

Пока что импорт из CSV.

  Ответить  
 
 автор: cheops   (09.11.2012 в 21:21)   письмо автору
 
   для: Владимир55   (09.11.2012 в 09:21)
 

>В этом отношении они примерно одинаковые, но Битрикс самый тормозной и малохольный (по
>импорту).
Ага, плата за архитектуру... можно пробоваться вынести критичные инфоблоки в отдельные таблицы - должно быть побыстрее. Как вам, кстати, UMI?

  Ответить  
 
 автор: Владимир55   (09.11.2012 в 21:45)   письмо автору
 
   для: cheops   (09.11.2012 в 21:21)
 

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

В общем, там упор на рекламу, а не на суть, и это мне не нравится. Даже техподдержка называется "Служба заботы".

А вот хостинг у них очень хороший! Пожалуй, самый лучший из всех, что я знаю. И быстрый, и гибкий в настройках, и ресурсов много, и техподдержка замечательная - для любой CMS будет хорошей площадкой.

  Ответить  
 
 автор: cheops   (09.11.2012 в 22:39)   письмо автору
 
   для: Владимир55   (09.11.2012 в 21:45)
 

Хм... с Bitrix может и разберешься, но приходится перелопатить тонны документации, причем документация для редактора по объему чуть не больше, чем документация для разработчика (и черта с два чего запрограммируешь, пока не перелопатишь обе). При разработке явно хотели и редакторам и программистам угодить... лично, я от Bitrix не в восторге, учитывая, что ориентируются они на массовый хостинг, не задействуя никаких нововведений PHP... да что там PHP, их визуальный редактор использует стили .header, .r и .l, которые задействует каждый второй верстальщик, в результате все рассыпается (вот не уж-то сложно ввести пространство имен для стилей редактора, пусть тысячи разработчиков сайтов мучаются, чем небольшая команда Bitrix). Сами шаблоны - это дикая смесь HTML и PHP, в которой понятное дело преобладает табличная верстка... да еще визуальный редактор использует <font>. Утверждают, что это дескать шаблоны, которые и трогать не приходится, так как это шаблоны... фактически же вся разработка сосредотачивается в их редактировании (особенно, если верстка внешняя, а не специально под Bitrix заточена).

PS Жалко, что на UMI такой отзыв, я её на днях поковырять собирался, вероятно, придется отложить.

  Ответить  
 
 автор: Владимир55   (09.11.2012 в 23:07)   письмо автору
 
   для: cheops   (09.11.2012 в 22:39)
 

Жалко, что на UMI такой отзыв, я её на днях поковырять собирался, вероятно, придется отложить.

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

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

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