Весенние зимние спячки - PullRequest
1 голос
/ 01 июня 2011

Я работаю над спящим приложением Spring Mysql, иногда, когда я делаю gethibernateTemplate () get (class, id), я вижу кучу HQL в журналах, и приложение зависает, приходится убивать tomcat.Этот метод читает триста строк, и их должно быть 18, я подумал, что, вероятно, смотрю на это неправильно. Мне нужно, чтобы вы помогли мне проверить это на уровне базы данных , но я не знаю, к чему подходить.Может быть, моя база данных не может принять так много хитов так быстро.

Я посмотрел phpMyAdmin в разделе времени выполнения информации, я вижу красные значения в:

Innodb_buffer_pool_reads 165 Handler_read_rnd 40Handler_read_rnd_next 713 k Created_tmp_disk_tables 8 Opened_tables 30

Могу ли я настроить приложение так, чтобы более мягко угрожать базе данных?Как я могу проверить, если это проблема?

Обновление Я поставил

Thread.sleep(2000);

в конце каждого цикла, и он сделал одинаковые номера вызовов (18), так что я думаю, что это не будет причиной?Могу ли я отказаться от этого подхода?Это другой взгляд на этот вопрос

Hibernate зависает или выбрасывает ленивую инициализацию, ни один сеанс или сессия не была закрыта

пытаясь по-другому

Обновление 2

Думаете, это может быть буфер чтения, читающий файлфайл размером 44 КБ, пробовал этот метод:

http://code.hammerpig.com/how-to-read-really-large-files-in-java.html

класс, но не работал.

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Я переписал программу, поэтому загружаю информацию прямо в базу данных, используя запрос mysql LOAD DATA INFILE.Работает очень быстро.Затем я обновил строки, изменив некоторые поля, которые мне нужны, также с помощью SQL-запросов.Я думаю, что в то же время просто слишком много информации для управления общей памятью и абстракциями.

0 голосов
/ 01 июня 2011

Обновление 1 - никогда не используйте Sleep или что-то медленное в транзакции. Транзакция должна быть закрыта как можно быстрее, поскольку она может блокировать другие операции с базой данных (что именно будет заблокировано, зависит от уровня изоляции)


Я не очень понимаю, как база данных связана с файлами в вашем случае использования. Но если материал работает для первого файла и позже становится медленным, то проблема может быть в сеансе Hibernate (для многих объектов), в этом случае запускайте новый сеанс транзакций / Hibernate для каждого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...