Mysql
 sql >> база данни >  >> RDS >> Mysql

Хибернация, производителност на JDBC и Java при среден и голям набор от резултати

Можете ли да направите тест за дим с възможната проста заявка като:

SELECT current_timestamp()

или

SELECT 1 + 1

Това ще ви каже какъв е действителният JDBC драйвер. Също така не е ясно дали и двата теста се извършват от една и съща машина.

Изпълнете една и съща заявка няколко хиляди пъти в Java. JVM се нуждае от известно време за загряване (зареждане на клас, JIT). Също така предполагам SimpleJDBC.getConnection() използва C3P0 пул на връзки – цената за установяване на връзка е доста висока, така че първите няколко изпълнение може да са бавни.

Също така предпочитайте наименуваните заявки пред ad hoc заявки или заявки за критерии.

Hibernate е много сложна рамка. Както можете да видите, той консумира 75% от общото време за изпълнение в сравнение със суровия JDBC. Ако имате нужда от необработен ORM (без мързеливо зареждане, мръсна проверка, разширено кеширане), помислете за mybatis . Или може би дори JdbcTemplate с RowMapper абстракция.

Не точно. Вижте Глава 19. Подобряване на производителността в документацията за Hibernate. Има много на отражение, случващо се там + генериране на клас. Още веднъж, Hibernate може да не е най-доброто решение, когато искате да изстискате всяка милисекунда от вашата база данни.

Въпреки това това е добър избор, когато искате да увеличите цялостното потребителско изживяване поради обширната поддръжка за кеширане. Вижте производителност док отново. Говори се предимно за кеширане. Има кеш от първо ниво, кеш от второ ниво, кеш на заявки... Това е мястото, където Hibernate може всъщност да надмине обикновения JDBC - може да кешира много по начини, които дори не можете да си представите. От друга страна – лошата конфигурация на кеша би довела до още по-бавна настройка.

Вижте:Кеширане с Hibernate + Spring – някои въпроси!

JVM (особено в сървър конфигурация) е доста бърза. Създаването на обект в хийпа е толкова бързо, колкото и в стека в напр. C, събирането на боклука е значително оптимизирано. Не мисля, че версията на Java, работеща с обикновен JDBC, би била много по-бавна в сравнение с по-родната връзка. Ето защо предложих няколко подобрения във вашия бенчмарк.

Вярвам, че JDBC е добър избор, ако производителността е най-големият ви проблем. Java се използва успешно в много приложения, натоварени с база данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разгръщане на Java приложение с база данни mysql работен плот

  2. как да създадете php mysql приложение, което работи офлайн

  3. Запазване на стойностите на текстовото поле дори след опресняване

  4. Как да вляза в MySQL като различен потребител?

  5. въведените данни от формуляр не се записват в mysql db?