В коде Java я пытаюсь получить 3500 строк из DB (Oracle). Для загрузки данных требуется почти 15 секунд. Я подошел к сохранению результата в кеше и извлечению из него тоже. Я использую простой оператор Select и отображаю 8 столбцов из одной таблицы (без использования соединений). Список использования для сохранения данных из БД и использования его в качестве источника для Datatable. Я также думал со стороны аппаратного обеспечения, такого как объем оперативной памяти, Хранение, скорость сети и т. Д. ... Он превосходит минимальные требования. Можете ли вы помочь сделать это быстрее (не нужно больше 3 секунд)?Оптимизация производительности в Java
ответ
Вы внесли правильную индексацию в свои таблицы? Я не люблю спрашивать об этом, так как это очень простой способ оптимизации ваших таблиц для запросов, и вы говорите, что вы уже пробовали несколько способов. Один из обходных решений, который работает для меня, заключается в том, что если цель запроса заключается в отображении результатов, код может быть сконструирован таким образом, что запрос должен немедленно отображать начальные данные, пока он еще загружает больше данных. Это подразумевает реализацию отдельного потока для загрузки и отдельного потока для отображения.
15 секунд - 15 секунд (и слишком длинный) для «простого запроса». Использование потока может * скрыть * проблему, возможно (в зависимости от того, как используется результат), но не будет * исправлять * проблему. – user2864740
Это наиболее вероятно, что основной проблемой является то, что у вас есть один или несколько из следующих действий:
- плохо спроектированные схемы,
- плохо спроектированные запрос,
- сильно перегружен базы данных, и/или
- плохо перегруженное/недоопределенное сетевое соединение между базой данных и вашим клиентом.
Никакого изменения кода на стороне клиента (Java), вероятно, не будет иметь существенного отличия (например, увеличение в 5 раз) ... если вы не делаете что-то сумасшедшее в том, как вы строите список, или узкое место находится в отображаемом коде, а не в поиске.
Вы должны использовать некоторые на стороне клиента и сервера на стороне инструменты, чтобы выяснить, является ли реальным узким местом является клиент, сервер или сеть. Затем используйте эти результаты, чтобы решить, где сосредоточить ваше внимание.
- 1. Оптимизация производительности в сокетах java
- 2. Оптимизация производительности GrabCut в opencv-java
- 3. Оптимизация производительности в R
- 4. Оптимизация производительности приращения массива
- 5. Оптимизация производительности Groovy
- 6. Java/PostgreSQL - Оптимизация данных для производительности
- 7. Java TCP/IP сокет Оптимизация производительности записи
- 8. Оптимизация производительности Clojure vs Equivalent Java
- 9. Оптимизация производительности базы данных для Java-сервера
- 10. Оптимизация производительности java «для» и «строка массива»
- 11. Оптимизация производительности массивной вставки ...?
- 12. Оптимизация производительности Nodejs
- 13. Оптимизация производительности битков
- 14. Оптимизация производительности двигателя JBPM5
- 15. Оптимизация производительности Grails
- 16. Оптимизация производительности - Кэш объектов
- 17. Оптимизация производительности поиска lucene
- 18. Оптимизация производительности морфологической обработки
- 19. SQL Query - Оптимизация производительности
- 20. оптимизация производительности rsyslog
- 21. Возможная оптимизация производительности рендеринга
- 22. Оптимизация производительности базы данных
- 23. Оптимизация производительности WCF NetNamedPipeBinding
- 24. Графика Оптимизация производительности выпуск
- 25. Оптимизация производительности поиска, MySQL
- 26. MySql оптимизация производительности таблицы
- 27. Оптимизация производительности GROUP BY
- 28. Оптимизация производительности углового фильтра
- 29. Оптимизация производительности метода indexOf
- 30. Оптимизация производительности QEMU-KVM
Пожалуйста, отправьте запрос; здесь есть много людей, которые могли бы предложить предложения по его ускорению. –
Если 3.5k строк занимает 15 секунд, это, скорее всего, плохо спланированный/плановый запрос. Но без более подробной информации .. (запрос может быть не SARGABLE независимо от объединений, например, не может быть подходящего индекса для покрытия условий) – user2864740
Проведенное время почти наверняка полностью находится в драйвере данных или JDBC. Добавление записи 3500 в список на Java должно занимать миллисекунды или меньше. –