powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
10 сообщений из 10, страница 1 из 1
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210617
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: заполнить 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 тоже интересны, но пока они всегда были еще медленнее.
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210620
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, что еще не нравится - генерация подобного csv файла через SELECT INTO OUTFILE тоже идет со скоростью 50-70Mb/sec на тех же SSD.
CentOS 6.5-6.7, ext4
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210628
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_,

Во время всех этих процессов за нагрузкой на CPU наблюдали?
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210629
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_LOAD DATA LOCAL INFILEПоложите файл на сервер и попробуйте без слова LOCAL.
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210631
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВо время всех этих процессов за нагрузкой на CPU наблюдали?
Да, 100% в один поток. Есть идеи как снизить?
miksoft_newcomer_LOAD DATA LOCAL INFILEПоложите файл на сервер и попробуйте без слова LOCAL.
Это и так на самом сервере делается локально. Эксклюзивный режим для задачи. Нигде никакого сетевого взаимодействия вообще нет.
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210645
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_miksoftВо время всех этих процессов за нагрузкой на CPU наблюдали?
Да, 100% в один поток. Есть идеи как снизить?Нет, но есть идея, что упираемся в CPU, а не в диски.
Есть два варианта - переходить на CPU, более быстрые в расчете на ядро, и выполнять загрузку в несколько параллельных потоков. Правда, во втором случае я не помню, что будет с блокировками, даст ли MySQL это сделать.
_newcomer_miksoftпропущено...
Положите файл на сервер и попробуйте без слова LOCAL.
Это и так на самом сервере делается локально. Эксклюзивный режим для задачи. Нигде никакого сетевого взаимодействия вообще нет.Таки попробуйте без слова LOCAL.
LOCAL вынуждает тащить файл через линк между клиентом и сервером.
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210660
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 вынуждает тащить файл через линк между клиентом и сервером.
Пробовал - вообще ни на что на влияет в данном случае.
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210740
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хотите узнать предельное время выполнения операции - выполняйте загрузку из файла, расположенного на виртуальном диске. Думаю, получите практически те же результаты (ну максимум выжмете ещё пару секунд).
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210743
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перфоманс схему смотри на 5.7.
...
Рейтинг: 0 / 0
Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
    #39210845
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_miksoftВо время всех этих процессов за нагрузкой на CPU наблюдали?
Да, 100% в один поток. Есть идеи как снизить?
[.

а зачем тебе CPU снижать? тебе его повышать надо, а не снижать.
ты же ускорить хочешь, а не замедлить.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Медленный INSERT в MEMORY таблицу 50М записей не зависящий от железа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]