- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Имеем:
InnodDB
1 столбец varchar (255) без индекса
SSD диск
innodb_buffer_pool_size = 1G
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
Задача:
Нужно импортировать из 1 файла 650 000 строк, файл 30 МБ.
Метод импорта phpmyadmin импорт из CSV
Текущая скорость:
1200 строк в минуту.
Это детский сад по скорости. Что я упускаю? По моему мнению скорость должна быть в 10 раз быстрее как минимум.
https://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html
https://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html
Поставил:
autocommit=0
думал минут 5 и ничего не загрузил, хотя диск напрягал.
После:
unique_checks=0
foreign_key_checks=0
вообще mysql не запускается из-за кучу ошибок в ХЗ каких таблицах на серваке.
Короче сделал тип myISAM за 1 минуту всё загрузил. Вот это я понимаю скорость.
Вставляйте за 1 запрос, например, 10 тысяч строк.
Из начальных условий не совсем понятно: 1 поле в таблице или все таки есть еще какие-то поля?
Если есть еще поля с индексами, перед первым инсертом отключайте индекс, а после заливки, включайте обратно.
Вставляйте за 1 запрос, например, 10 тысяч строк.
Из начальных условий не совсем понятно: 1 поле в таблице или все таки есть еще какие-то поля?
Если есть еще поля с индексами, перед первым инсертом отключайте индекс, а после заливки, включайте обратно.
Да юзал чисто phpmyadmin. Нет, там вообще было только 1 поле и всё. Без ничего. Индексов нет.
Поставил:
autocommit=0
думал минут 5 и ничего не загрузил, хотя диск напрягал.
Он и не загрузит если не проставить в конце COMMIT
unique_checks=0
foreign_key_checks=0
Это не влияет на загрузку, если нет констрейнтов(а у вас их нет)...
Конвертните только таблицу обратно в innodb, ибо myisam - прошлый век и выигрывает у innodb только для узкоспециализированных задач.
А вообще для загрузки/выгрузки пользуйтесь встроенными в mysql вещами и не будете знать что такое долгая загрузка на таких объемах данных.... ваш файл загрузится секунд за 5-10
В phpmyadmin есть метод импорта "CSV using LOAD DATA" .Попробуйте его.
Работает довольно шустро.
У меня при импорте 1 млн строк (InnodDB) обычный CSV вообще завис,этот отработал за пару секунд.
если есть доступ к консоли сервера можно воспользоваться командой mysql source
https://dev.mysql.com/doc/mysql-backup-excerpt/5.0/en/reloading-sql-format-dumps.html
таким образом оно будет грузить пачками запросы и вставлять в базу, все происходит сильно бодрее.
В phpmyadmin есть метод импорта "CSV using LOAD DATA" .Попробуйте его.
Работает довольно шустро.
У меня при импорте 1 млн строк (InnodDB) обычный CSV вообще завис,этот отработал за пару секунд.
Попробовал. Просто чудесная вещь. Спасибо, прямо за секунды импортировала. Почитал про это, что-то никакого не нужно было.
Есть еще один вариант - сделать в мускуле таблицу с движком CSV с нужной структурой.
Потом просто копирнуть текущий csv файл вместо мускульного и всё.
Есть еще один вариант - сделать в мускуле таблицу с движком CSV с нужной структурой.
Потом просто копирнуть текущий csv файл вместо мускульного и всё.
Тоже вариант прикольный.