[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysql параллельное выполнение
T1grOK
Есть парсер, предположительно должен быть многопользовательским. Он выполняет довольно много манипуляций (в памяти).
Дело в том, что другой пользователь не может войти, он ожидает как понимаю пока Mysql разгрузится.

Есть следующие данные(при запущенном одном парсере):
1) ОЗУ предостаточно. 0,5 ГБ стабильно свободно.
2) Процессор загружен не более, чем на 20%(интересно на VPS показывает относительно моих ресурсов?!).
3) Операции вставки производятся, через INSERT IGNORE INTO, с интервалом 0,4-0,5 секунды(1 вставка - группа записей(25шт)).
4) Соединение держится 3 часа.
5) Всего в базу поступает 6-7к запросов на вставку.

Какие есть предположения, мысли, советы? Может как то сконфигурировать Mysql нужно?

Или виноват кто то другой?

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sergeiss
T1grOK, я вот не совсем понял. То есть, у тебя есть парсер, который "барабанит" 3 часа, блокируя на это время Мускуль для других юзеров? Если это так, то почему бы просто не писать данные куда-нибудь в текстовый файл, а потом, по окончании процесса парсенья, залить это всё в БД?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
inpost
T1grOK
Варианты:
1) Используй innodb движок. Блокируется не таблица, а только строка.
2) Снизить нагрузку на одну таблицу через временную таблицу или файл. Копируй результаты парсера туда, в конце всё объединишь.
3) Между запросами ставь sleep, то есть на 1-2 секунды таблица будет освобождаться от работы с парсером и будет доступна другим запросам пользователей. Единственная проблема, что запросы будут медленнее в момент выполнения парсера.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
T1grOK
Да, спасибо. Сделал так, подключаюсь к базе, делаю основные манипуляции, закрываю соединение, получаю и обрабатываю данные, делаю новое подключение, и забрасываю все данные в БД.

Всем спасибо.

Сильно не бейте, спрошу в этой же теме. Можно ли распараллелить запросы http сервера. То есть, сейчас открыв 2 вкладки в браузере, они обрабатываются последовательно, а нужно параллельно. То есть, http сервер (процесс) привязывается к сессии(или любому другому идентификатору).
Как то можно настроить, чтоб каждый запрос обрабатывал, отдельный процесс что ли...

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sergeiss
Цитата (T1grOK @ 17.07.2014 - 09:48)
Сильно не бейте, спрошу в этой же теме. Можно ли распараллелить запросы http сервера. То есть, сейчас открыв 2 вкладки в браузере, они обрабатываются последовательно, а нужно параллельно. То есть, http сервер (процесс) привязывается к сессии(или любому другому идентификатору).
Как то можно настроить, чтоб каждый запрос обрабатывал, отдельный процесс что ли...

За что тебя бить-то? Скажи за что - побъём smile.gif

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

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.