Что самый эффективный путь состоит в том, чтобы добавить много данных к mysql базе данных?

То, что делает, "не работает" среднее? Какую ошибку Вы получаете от где? Если это - Ваш браузер, говоря Вам, это не может найти anything.mydomain.com, чем Вы должны отредактировать Ваши доменные записи в DNS соответственно, таким образом, Ваш "доменный поставщик" был бы целью для решения этого.

4
задан 31 July 2013 в 22:15
2 ответа

Прочтите ЗАГРУЗИТЬ ДАННЫЕ и посмотрите, соответствует ли он вашим потребностям и ограничениям. Из которых вы сказали нам только «быстрее», но, возможно, у вас есть и другие проблемы: -)

http://dev.mysql.com/doc/refman/5.5/en/load -data.html

С другой стороны, похоже, что вы можете сделать INSERT INTO VALUES (1a, 1b), .. (50000a, 50000b) , но может быть максимальный размер запроса, который вы запустите в.

https://stackoverflow.com/questions/5529529/mysql-bulk-insert

4
ответ дан 3 December 2019 в 03:18

Глядя на запрос, который вы разместили в вопросе, я предполагаю, что ваши таблицы используют InnoDB.

Хотя вы приняли отличный ответ, я хотел добавить кое-что еще.

InnoDB Архитектура

InnoDB Architecture

Обратите внимание на двойной буфер записи. Изменения часто записываются в буфер двойной записи в ibdata1 и файлы журнала (ib_logfile0, ib_logfile1) через буфер журнала.

Вы можете отключить буфер двойной записи, но для этого потребуется перезапустить mysql дважды.

ШАГ 01 : УСТАНОВИТЬ ГЛОБАЛЬНЫЙ innodb_fast_shutdown = 0;

ШАГ 02 : перезапуск службы mysql --innodb_doublewrite = 'OFF' --innodb_fast_shutdown = 0

ШАГ 03 : Выполните свой код

START TRANSACTION;
INSERT IGNORE INTO info (Created, Modified, MType, Pform, Name, Version, Sig) VALUES ('2013-07-31','2013-07-31','mtype','pform','name','version','signature');
(repeat 49,000 times)

edit: SELECT id INTO @r FROM info WHERE sig = 'signature';

INSERT IGNORE INTO fullname (ID, Name) values (@r,'fullname');
(repeat 49,000 times)
UPDATE info SET dbversion = 2098 WHERE dbversion = 0;
UPDATE version SET ver = 2098;
COMMIT;

ШАГ 04 : service mysql restart

Ваш запрос должен иметь меньше операций ввода-вывода на диск при выполнении массового обновления.

Попробуйте !!!

CAVEAT : Установка innodb_fast_shutdown на 0 принудительно приводит к тому, что все транзакционные изменения в ibdata1, ib_logfile0 и ib_logfile1 полностью сбрасываются на диск. Это сокращает время запуска mysql.

1
ответ дан 3 December 2019 в 03:18

Теги

Похожие вопросы