Для этого нужны базы данных. Если вы не хотите тратить много времени на создание большого приложения базы данных, попробуйте sqlite .
Вы пробовали Советы по массовой загрузке данных из Советы по настройке производительности InnoDB (особенно первый) :
При импорте данных в
InnoDB
убедитесь, что в MySQL не включен режим автоматической фиксации , поскольку для этого требуется сброс журнала на диск для каждого {{1} } вставлять.Чтобы отключить автоматическую фиксацию во время операции импорта, окружите ее операторамиSET autocommit
иCOMMIT
:SET autocommit = 0; ... Операторы импорта SQL ... COMMIT;
Если вы используете опцию mysqldump
- opt
,вы получаете файлы дампа, которые быстро импортируются в таблицуInnoDB
, даже без упаковки их с помощьюSET autocommit
иCOMMIT
операторов.Если у вас есть ограничения
UNIQUE
для вторичных ключей, вы можете ускорить импорт таблицы , временно отключив проверку уникальности во время сеанса импорта . :SET unique_checks = 0; ... Операторы импорта SQL ... SET unique_checks = 1;
Для больших таблиц это значительно экономит дисковый ввод-вывод, потому что
InnoDB
может использовать свой буфер вставки для записи вторичных индексных записей в пакете. Убедитесь, что данные не содержат повторяющихся ключей .Если у вас есть ограничения
FOREIGN KEY
в ваших таблицах, вы можете ускорить импорт таблиц, отключив проверку внешнего ключа на время . сеанса импорта:SET foreign_key_checks = 0; ... Операторы импорта SQL ... SET foreign_key_checks = 1;
Для больших таблиц это может сэкономить много дискового ввода-вывода.
ИМО, стоит прочитать всю главу.
Вы пытались запустить транзакцию в начале и зафиксировать ее в конце? Из вопроса, который вы связали : «Измените шаг Insert Data, чтобы начать транзакцию в начале и зафиксировать ее в конце. Вы получите улучшение, я гарантирую».
Помните, что InnoDB является транзакционным, а MyISAM - нет. Механизмы транзакций обрабатывают каждый оператор как отдельную транзакцию, если вы явно не контролируете транзакцию. Это может стоить дорого.