|
|
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
Задача: заполнить MEMORY таблицу некоторым кол-вом записей. Скажем около 50М. таблица из 15 полей, почти все int/smallint и по одному полю char(12), timestamp и binary(8) индексов в таблице назначения НЕТ Имеется несколько серверов разной конфигурации, и с медленными HDD и с ультра новыми промышленными SSD. Все в RAID. Памяти 128-256Гб. На серверах или MySQL 5.1 или 5.7 Проблема: Скорость заполнения почти не зависит от конфигурации железа и версии/настроек MySQL и находится в пределах 2мин для совсем старых серверов с тормозными HDD до 1мин 40сек для быстрейших SSD имеющих проверенную линейную скорости чтения/записи 1.5-2Гб/сек Данные вставлялись как через INSERT из другой таблицы, так и через LOAD DATA LOCAL INFILE (читаемый csv файл около 4.5Гб) Финальная задача - сократить время загрузки на конфигурации с 5.7 и SSD до хотя бы 30-40 сек. Варианты с MyISAM и InnoDB тоже интересны, но пока они всегда были еще медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 23:00 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
И да, что еще не нравится - генерация подобного csv файла через SELECT INTO OUTFILE тоже идет со скоростью 50-70Mb/sec на тех же SSD. CentOS 6.5-6.7, ext4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 23:06 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
_newcomer_, Во время всех этих процессов за нагрузкой на CPU наблюдали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 23:42 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
_newcomer_LOAD DATA LOCAL INFILEПоложите файл на сервер и попробуйте без слова LOCAL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 23:46 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
miksoftВо время всех этих процессов за нагрузкой на CPU наблюдали? Да, 100% в один поток. Есть идеи как снизить? miksoft_newcomer_LOAD DATA LOCAL INFILEПоложите файл на сервер и попробуйте без слова LOCAL. Это и так на самом сервере делается локально. Эксклюзивный режим для задачи. Нигде никакого сетевого взаимодействия вообще нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 00:01 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
_newcomer_miksoftВо время всех этих процессов за нагрузкой на CPU наблюдали? Да, 100% в один поток. Есть идеи как снизить?Нет, но есть идея, что упираемся в CPU, а не в диски. Есть два варианта - переходить на CPU, более быстрые в расчете на ядро, и выполнять загрузку в несколько параллельных потоков. Правда, во втором случае я не помню, что будет с блокировками, даст ли MySQL это сделать. _newcomer_miksoftпропущено... Положите файл на сервер и попробуйте без слова LOCAL. Это и так на самом сервере делается локально. Эксклюзивный режим для задачи. Нигде никакого сетевого взаимодействия вообще нет.Таки попробуйте без слова LOCAL. LOCAL вынуждает тащить файл через линк между клиентом и сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 01:41 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
miksoftЕсть два варианта - переходить на CPU, более быстрые в расчете на ядро, и выполнять загрузку в несколько параллельных потоков. Других CPU нет, и так эти только купили. А вот в несколько потоков можно. Но результаты для этой конфигурации железа (32 ядра, Xeon E5-2630 2.4Ггц) следующие (csv бился на части и грузился в разные таблицы параллельно): 1 поток: 95 сек 4 потока: 32 сек 8 потоков: 35 сек 16 потоков: 37 сек Проверялось на MEMORY и MyISAM заполняемых таблицах - результат абсолютно идентичный (InnoDB медленнее). Не особо понятно, можно ли что-то улучшить еще. 4 потока, лучше чем 8 не особо хорошо. Загрузка во всех тестах всех потоков 100%. miksoftТаки попробуйте без слова LOCAL. LOCAL вынуждает тащить файл через линк между клиентом и сервером. Пробовал - вообще ни на что на влияет в данном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 03:42 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
Если хотите узнать предельное время выполнения операции - выполняйте загрузку из файла, расположенного на виртуальном диске. Думаю, получите практически те же результаты (ну максимум выжмете ещё пару секунд). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 09:14 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
перфоманс схему смотри на 5.7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 09:19 |
|
||
|
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
|
|||
|---|---|---|---|
|
#18+
_newcomer_miksoftВо время всех этих процессов за нагрузкой на CPU наблюдали? Да, 100% в один поток. Есть идеи как снизить? [. а зачем тебе CPU снижать? тебе его повышать надо, а не снижать. ты же ускорить хочешь, а не замедлить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 11:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39210628&tid=1831948]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 467ms |

| 0 / 0 |
