У меня есть приложение Java, которое анализирует файлы и сохраняет нужные мне данные в базе данных SQLite.
Я пытаюсь сохранить данные в удаленной базе данных MySQL, которая вместо этого находится на сервере моих хостов.
Я переписал запросы, которые имели другой синтаксис, но у меня все еще есть проблема: они выполняются намного медленнее, чем когда я делаю это локально, используя базу данных SQLite. Это что-то, с чем мне приходится смириться, так как одно локальное, а другое — удаленное соединение, или есть что-то, что я должен знать, прежде чем продолжить?
Например, разбор 636 файлов и сохранение всех нужных мне данных (некоторые данные бесполезны, часть нужно отсортировать и т. д.) занимает 2,5 минуты, когда я использую базу данных SQLite. Это примерно 4,24 файла в секунду. В среднем на файл уходит около 15 секунд, когда я использую базу данных MySQL, поэтому при использовании базы данных MySQL это займет примерно в 63 раза больше времени.
В чем, я думаю, может быть основная проблема, но я не знаю, как ее решить: в каждом файле в среднем 190 вставок. Поскольку файлы представляют собой листы статистики для боулинг-центра, и каждая игра представляет собой строку (60 игроков в лиге, умноженное на 3 игры), плюс некоторые проверки, чтобы увидеть, существует ли лига в таблице лиг, расписании и т. д., я действительно не могу просто делайте меньше вставок, так как вся информация важна.
Я думаю, было бы очень полезно, если бы я мог сгруппировать все вкладыши для игровой части в один большой вкладыш, но я понятия не имею, возможно ли это / как это возможно / стоит ли оно того или проблема в чем-то другом.
Я хотел бы знать, нахожусь ли я хотя бы на правильном пути или мне следует привыкнуть к моему приложению, которое занимает так много времени для хранения данных, поскольку оно подключено удаленно.
INSERT INTO mytable (col1, col2) VALUES (1, 2), (3, 4), (5, 6)
. Что касается сжатия, прочитайте это - stackoverflow.com/questions/2506460/ - person Roman Newaza   schedule 05.03.2012