Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Есть скрипт для импорта товаров в БД.
Обычный Импорт\експорт через тот же дамп - не подходит, структура системы не позволяет, потому надо извращаться, но вопрос не в этом.
Сам скрипт состоит из процедуры и функции, реализующих логику, и последующего обращения к ним с разными параметрами ( с уникальным кодом продукта)
1)
Отредактированно YAAP (20.09.2011 19:03:35)
Неактивен
Тестить нужно ...
Откуда запускается скрипт ?
Как выглядит сам скрипт ?
Какая часть скрипта берёт сколько время ?
Содержимое touchProduct и touchValue ?
EXPLAIN и PROFILING запросов.
my.snf и конфигурации серверов ...
Неактивен
1) Откуда запускается скрипт ?
Запускается из консоли в обоих случаях через mysql -u ... < script.sql
2) Как выглядит сам скрипт ?
Я описал. 2 функции, потом постоянный обращения к ним
В аттаче - первые 200 строк скрипта. Через каждый 100 продуктов стоит COMMIT
3) Какая часть скрипта берёт сколько время ?
Не подскажете как проверить?
4) Содержимое touchProduct и touchValue ?
В прикрепленном файле
5) EXPLAIN и PROFILING запросов.
Запросы в функциях - селекты по ключам и инсерты.
Если нужны EXPLAIN и PROFILING каких-то запросов - скажите, я приведу их
6) my.snf и конфигурации серверов ...
В аттаче
Ubuntu:
Linux 72-Ubuntu SMP Fri Jul 29 21:08:37 UTC 2011 i686 GNU/Linux
mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1
model name : Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz
MemTotal: 2060052 kB
windows
MS Windows Server 2008 R2 Web Server 64-bit SP1
CPU
Cores 4, Intel(R) Xeon(R) CPU E5504 @ 2.00GHz
Memory
Type DDR3,24568 MBytes
Отредактированно YAAP (20.09.2011 22:50:52)
Неактивен
innodb_flush_log_at_trx_commit=1
Вот это в ноль попробуйте поставить.
Или в виндоус что-то системно-плохое, или данные разные (например,
под ubuntu таблицы не InnoDB) — на 8 мегабайтах по умолчанию InnoDB
тормозит не просто сильно, а дико.
Неактивен
paulus написал:
innodb_flush_log_at_trx_commit=1
Вот это в ноль попробуйте поставить.
Или в виндоус что-то системно-плохое, или данные разные (например,
под ubuntu таблицы не InnoDB) — на 8 мегабайтах по умолчанию InnoDB
тормозит не просто сильно, а дико.
innodb_flush_log_at_trx_commit поставлю, отпишусь
Под убунтой таблицы InnoDB (только что проверил). Та и я перед тестами делал полный дамп структуры ..
Как видите - не сильно дико тормозит
Неактивен
Не помогло, тестировал на "аналогичном" скрипте (заливались списки возможных параметров) - в убунте 4 секунды, в винде 4 минуты+
При этом в винде mysqld забирал стабильно 13% CPU + 350K памяти.
Неактивен
Хм, а Вы уверены, что подхватывается именно этот файл настроек в Windows?
У Вас там написано почти 600 мегабайт памяти, а никак не 350к.
Неактивен
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini" MySQL55
тут сложно ошибиться.
зы: запускал импорт с параметрами -f и --unbeffered
+ написал, что это немного другой файл (он меньше по объему, тестировать легче), но принцип его работы точно такой же, процедура и постоянное обращение к ней.
зыы: аттачу на всякий и этот скрипт
Неактивен
И то правда. А подсоединяетесь точно к этому экземпляру?
Неактивен
Отредактированно YAAP (27.09.2011 20:54:39)
Неактивен
Хорошо, а SHOW STATUS LIKE 'innodb_buffer%'? Вдруг у Вас несколько
экземпляров. Штука выглядит действительно очень странно, тут какая-
то ошибка, но надо понять — где.
И, боюсь, что дальше прийдется смотреть вывод SHOW ENGINE INNODB
STATUS во время заливки и пытаться понять, что происходит.
Неактивен
Ubuntu:
Отредактированно YAAP (28.09.2011 23:31:00)
Неактивен
Тогда я не верю в 350К памяти.
7615 занятых страниц × 16К памяти на страницу = 122М памяти.
Ищите, где Вы ее потеряли
Ну и SHOW ENGINE INNODB STATUS таки надо будет смотреть.
Неактивен
350k памяти брал mysqld во время загрузки скрипта, т.е. это не данные из mysql, а всего лишь указания менеджера процессов.
SHOW ENGINE INNODB STATUS, спасибо, буду смотреть.
Неактивен
Вряд ли процесс выделил 100 мегабайт, а диспетчер процессов видит 300 килобайт.
Или процесс другой, или смотрите не в тот столбец.
Неактивен