úterý 17. června 2008

Výkonnost PreparedStatementu

Zakořeněným názorem je, že by se měly při práci s JDBC používat PreparedStatementy namísto obyčejných Statementu. Důvody jsou na bíledni, a to větší výkonnost a bezpečnost. Tyto argumenty Vám omlátí o hlavu kde kdo. Otázkou je jak je to s výkonností. Dlouhou dobu jsem si žil s názorem, že využití PreparedStatementu má opodstatnění až při vícenásobně opakovaném spuštění daného příkazu a to z důvodů vlastní režie na předzpracování dotazu.

Tento týden jsme tuto otázku řešili v diskusním fóru na builder.cz a po mých požadavcích na test, který jasně prokáže, jak to doopravdy je, se na světle vyloupla hodně slušná prezentace Understanding Prepared Statements in Oracle, která změnila názor na věc - minimálně pro Oracle. Doporučení jsou jasné.

  • Prefer prepared statements
  • Parse once – execute often
  • Use bind variables where appropriate (Don't over-bind)
  • Do not rely on Cursor Sharing
  • Use JDBC prepared statement caching

Vřele doporučuji k přečtení, i když vaše databázová platforma není zrovna Oracle. Samozřejmě je otázkou, jestli můžeme tyto doporučení brát jako bernou minci pro ostatní databáze...