|
|
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Очень нужна помощь, что-то я в тупик зашёл. Перенёс приложение с рабочей, виртуальной машины на подготовленный сервер. На котором наблюдается крайне низкая производительность при выполнении Insert. При выполнении обработчика, в базу должно поступить порядка 150 000 строк. На рабочей машине эта процедура занимала около 15 минут. На сервере – 2 часа и 60% только записано. При этом Select отрабатывает на ура. Если смотреть top то под mysql выделено 2-5% mem (до 500Mb) и около 6 Gb памяти не используется (inactive в /proc/meminfo) Что-то я крутил в настройках /etc/mysql/my.cnf, но на данный момент всё по умолчанию. Проверен жесткий диск в софт-рейде (hdparm), показатели в норме. Помогите найти проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 23:59:02 |
|
||
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
timark, У меня было подобное, в таблице были индексы и при копировании этой таблицы на другой сервер индексы тоже перенеслись и insert тормозил, тоже не мог понять в чём дело, пока не удалил на момент импорта индексы из таблицы на другом сервере. Возможно у Вас тоже в этом дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 00:32:08 |
|
||
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
timark, Как именно производите вставку? Какой движок таблиц? Если InnoDB, то чему равен innodb_flush_log_at_trx_commit ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 09:48:54 |
|
||
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
miksoft, Вставка производится из приложения (php, yii2/activerecord). Движок InnoDB. Посмотрел show variables like 'innodb_flush_log_at_trx_commit'; Значение показывает = 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 12:40:36 |
|
||
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
timarkПосмотрел show variables like 'innodb_flush_log_at_trx_commit'; Значение показывает = 1.Замените на 0 или 2. timarkВставка производится из приложения (php, yii2/activerecord).Т.е. одиночными INSERT-ами? Было бы куда быстрее выполнить вставку из файла с помощью LOAD DATA INFILE/mysqlimport. Так этот объем загрузился бы за секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 12:46:23 |
|
||
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
На данном этапе происходит перенос данных, хоронящихся в одной таблице в распределённые таблицы со связями. После переноса обработчик как раз таки будет брать данные из файла xlsx, где примерно по 100-200 000 строк. Сомневаюсь, что LOAD DATA INFILE тут поможет, поскольку данные следует распределить по таблицам. Или я ошибаюсь? Может как-то можно по определённым алгоритмам на триггерах это реализовать? Изменил значение innodb_flush_log_at_trx_commit на 2 и вроде бы пошло дело, примерно раз в 100 быстрее. Но только ли в этом дело, потому что на рабочей машине это значение = 1 и она в 4 раза менее производительней обработка примерно 15 мин занимает. Может ещё, что покрутить? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 13:30:20 |
|
||
|
Низкая производительность при insert
|
|||
|---|---|---|---|
|
#18+
timarkСомневаюсь, что LOAD DATA INFILE тут поможет, поскольку данные следует распределить по таблицам. Или я ошибаюсь? Может как-то можно по определённым алгоритмам на триггерах это реализовать?Я бы рассмотрел вариант загрузки в промежуточную таблицу, а потом разноса по другим таблицам с помощью INSERT ... SELECT ... . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 13:33:46 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38938204&tid=1833297]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 312ms |

| 0 / 0 |
