Möjligheten att få bättre effektivitet i databasåtkomst från Java. Lennart Henäng, IT-arkitekt, Handelsbanken 2009-04-16



Relevanta dokument
DB2-åtkomst från WebSphere

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.

Introduktion till Entity Framework och LINQ. Källa och läs mer

Din guide till. Teknisk Specifikation Säljstöd

Inledande programmering med C# (1DV402) Introduktion till C#

Mål med lektionen! Repetera och befästa kunskaperna.

RUG Trace JDBC error. Sandvik IT Services

1 Systemkrav avantraupphandling

Prestanda, skalbarhet och tillgänglighet Torbjörn Stavenek

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

DI Studio nyheter

Ny installation...2. Översikt...2. Filer som behövs...2. Installera SQL Server Express (om det behövs)...3. Skapa en databas i SQL Server...

Alternativ till låsning. Optimistik approach TimeStamp

Distribuerade affärssystem

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Copyright 2003, SAS Institute Inc. All rights reserved.

Stored procedure i ASP.NET

Microsoft ALM Agenda. Processer metoder Kundcase Paus Under huven på Visual Studio Team Test Frågor och Svar + en liten tävling

Introduktion till hårdvara, mjukvara och operativsystem

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Hur integrera Active Directory och DNS? Rolf Åberg, Simplex System

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster

Stored procedure i ASP.NET

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Att uppgradera från Informix 7.31 och kanske lite annat. Johan Backlund

Tips & Trix - Teknik Jeeves World Copyright 2011 Jeeves Information Systems AB

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

- Effektiv prestandatestning, teknisk verifiering, tuning, verifiera krav, förvalta prestanda

Konsultprofil Lennart Boklund

IBM Intelligent Operations Center. Windows IBM Intelligent Operations Center V5.1

Taxi boknings system, inpassering och medlemshanterings system, betallösningar, realtidssystem, App utveckling

Som person är Dennis en utåtriktad och öppen människa och jobbar gärna i grupp. Han är analytisk, noggrann och ansvarstagande..

Android översikt. TDDD80 Mobila och sociala applikationer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Big Data i spelbranchen

Innehåll. MySQL Grundkurs

Datalagringsmetodik och arkitektur i Java. Projektdefinition. Projektdefinition. Björn Brenander. 7 maj 2001

Amazon Cloud Computing Joakim Lindbom CTO, Capgemini Sverige. Who am I? Jobbat inom Capgemini sedan 1985

Uppdatera Easy Planning till SQL

Inkapsling (encapsulation)

PEAK PERFORMANCE 11 JUNI 2015

Identity Management i ett nätverkssäkerhetsperspektiv. Martin Fredriksson

PAINTFEUD. Erfarenheter

SAS USER FORUM SWEDEN 2017 USER FORUM. SAS Viya och öppenhet en gemomgång av LUA-, Java-, Python- och REST-gränssnitten mot SAS Viya

SAST Väst Prestanda test : Leverera högt verksamhetsvärde på kort tid

Konsultprofil Per Brundin

Ny skalbar och öppen OLAP-teknologi, SAS OLAP server

INTRODUKTION TILL JDBC

Uppdatera Easy Planning till SQL

Instruktioner för uppkoppling mot NyA Open

QC i en organisation SAST

Classes och Interfaces, Objects och References, Initialization

EVRY One Outsourcing Linköping AB. Erfaranheter av daglig drift och nyttjande av IFS Applications 8.

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

E13 "Behind the Wild"

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005

1.1 Runnable och Thread

BTH Studentkontohantering API Management

ADO.NET Murach Kapitel 17-20

Enterprise Java Beans Assignment 1

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) Slutrapport

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

UX 40 SAP Fiori UX inte bara for SAP applikationer. Christer Ingemarsson

Föreläsning 22. Tobias Wrigstad. Under huven på JVM. Bytekod. JIT. Reflection. Profiling.

Spekulativ exekvering i CPU pipelining

Sample exam questions. Database exam TIG058

Main headline. Affärsvärde till Perstorp AB Headline. mha appar SAPSA IMPULS

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Systemutvecklare SU14, Malmö

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

ÖVERVAKNING AV SQL SERVER

CDX. Systemstöd för arbete med en klinisk rapportdatabas. SAS Forum 25sept 2003 Gunilla Sköllermo, AstraZeneca R&D

Övning: Arbeta med Azure Explorer

Att skriva till och läsa från terminalfönstret

E12 "Evil is going on"

Boss installationsmanual förberedelser

DL/I programmering. från grunden. monitors. Peter Sterwe. training people

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

LEX INSTRUKTION REPLIKERING UPPGRADERING

Concurrency Saker händer samtidigt. Process En instans av ett program

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

JobOffice SQL databas på server

Systemkrav. Systemkrav för Hogia Approval Manager. Gäller från och med programversion

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Konsultprofil Andreas Lundgren

Windows Forms Winstrand Development

Klientprogrammering mot databaser

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

ASP.NET Thomas Mejtoft

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

PC-Axis familjen En produktöversi k t

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Teknisk kravspecifikation för nytt Omsorgs system

Transkript:

Möjligheten att få bättre effektivitet i databasåtkomst från Java Lennart Henäng, IT-arkitekt, Handelsbanken 2009-04-16

Agenda Affärskritiska system (en kort bakgrund) Viktiga egenskaper Utmaningar för affärskritiska applikationer skrivna i Java IBM Optim purequery Våra planer

Affärskritiska system Vi kör cirka 1000 applikationer i samma operativsystem Upp till flera hundra transaktioner per sekund från IMS, WAS och batch Går något fel så måste problemet hittas och åtgärdas så snabbt som möjligt

Viktiga egenskaper för affärskritiska system Högsta möjliga prestanda I förväg fastställda och låsta åtkomstvägar med möjlighet att backa Spårbarhet Användare av revisionsskäl Applikation för problembestämning och snabb problemlösning Säkerhet Behörighet att använda program mot databasen men inte allmän behörighet att läsa och ändra data i databasen

Egenskaper hos statisk SQL Statisk SQL ger bättre prestanda Statement caching förbättrar prestanda för dynamisk SQL i verkligheten kan man inte räkna med 100% cache hit Optimering av åtkomstvägar kan ske sällan och vid planerade tillfällen DB2 kan versionshantera åtkomstvägar DB2 kan spara två generationer av åtkomstvägar, för eventuell fallback Beroenden mellan program och objekt registreras i DB2:s katalog En säkerhetsmodell där användare inte behöver åtkomst till data DB2 paketerar åtkomstvägar per program Tydlig identifiering av program som är inblandade i problem Vår vardag sedan 20 år tillbaka

Prestandaegenskaper för statisk SQL IBM:s egna tester visar reducerat CPU-uttag för statisk SQL Normalized Throughput by API for JDBC Type 4 Driver 500 % increase/reduction in CPU per transaction compared to JDBC using Type 4 driver Normalized Throughput (ITR) 400 300 200 100 0 EJB 2 274 JPA 360 JDBC 420 pq Method Dynamic 446 Client Optimizn Static 485 pq Method Static 524 % increase/reduction in CPU per transn compared to JDBC -50% -35% EJB 2 JPA -14% pq Method Dynamic 6% Client Opt. Static 15% 25% IRWW en OLTP-workload, Type 4 driver Cache hit mellan 70 och 85% 15% - 25% lägre CPU-uttag per transaktion jämfört med dynamisk SQL via JDBC pq Method Static Från artikel i IBM Database Magazine, Issue 2, 2008

Hur vi kan följa upp prestanda i våra traditionella system IMS MPP1 Txn1 - Pgm1 - Pgm2 z/os LPAR IMS MPP2 TxnA - PgmX - PgmY DB2PROD IMS MPP3 Txn1 - Pgm1 - Pgm2 DB2 Accounting för IMS-applikationer tillåter oss att se prestandadata ur många perspektiv: Per transaktion (PLAN name) Per modul (package level accounting) Per address space (regionnamn) Per end user ID (IMS thread reuse) App CPU PLAN Txn1 2.1 TN1PLN TxnA 8.3 TNAPLN Detta gör det lätt att isolera prestandaproblem, kapacitetsplanera, analysera programförändringar ur ett prestandaperspektiv, jämföra resursåtgång mellan moduler, etc.

Så här fungerar det idag med WebSphere-applikationer A2 A6 Applikationsserver A1 A4 A3 A5 Dataåtkomstlager EJB Query Language Persistenslager JDBC Driver DB2 eller IDS USER1 USER1 USER1 Vad vet DBA:n? - Applikationsserverns IP-adress/started task - WAS connection pooling userid - om applikationen kör JDBC or CLI Vad vet DBA:n inte? - vilken applikation är det som körs? - vilken utvecklare skrev applikationen? - vilka andra SQL-satser kör applikationen? - när ändrades applikationen senast? - hur har CPU-förbrukningen utvecklats? - etc. User CPU PACKAGE USER1 2.1 JDBC USER1 8.3 JDBC USER1 22.0 JDBC

Svårigheten att få en helhetsbild av prestanda Applikationsutvecklare Systemkonfiguratör Nätverksadministratör DBA Applikationsserver DB-server JDBC Package JDBC Driver Persistenselager Dataåtkomstlager EJB Query Language WebSphere Connection Pool Affärslogik 1 3 2 4 5

Vad är det som tar tid i en applikation?

Exempel på helhetsbild

Databasåtkomst från Java POJO:s med SQL via JDBC eller SQLJ Fördelar Enkelt Kontroll över SQL-satserna Möjlighet till bra prestanda Bra monitorering (om man använder SQLJ) Nackdelar Ingen bra koppling till objektmodellen Tidskrävande för utvecklaren Persistensramverk (ORM) Fördelar Mindre arbete för utvecklaren Åtkomst via OO affärsobjekt Nackdelar Komplexitet Mindre kontroll över SQL-satserna (de genereras) Risk för prestandaproblem och svårt att problembestämma

Persistensramverk Spring, Hibernate, ibatis, EJB 3, JPA Isolerar javautvecklaren från databasen Ramverk genererar SQL SQL anropas asynkront mot applikationen uppdateringar sorteras för referensintegritet uppdateringar flyttas till slutet på transaktionen pseudo-sql kan rendera i flera SQL-satser Klassisk problembestämning svår att göra prestandaproblem funktionella problem

Alternativa sätt att förbättra situationen Egen kod kan använda JCC Client User API för att föra över viktig korrelationsinformation från javaapplikationen Egen kod kan använda JCC Performance Monitoring API för att samla på sig prestandainformation SQLJ kan användas för att få statisk SQL Native stored procedures kan användas för att få statisk SQL purequery Client Optimization kan användas för att generera statisk SQL Optim Studio och purequery runtime kan ge en komplett miljö för att utveckla och köra affärskritiska applikationer skrivna i Java

purequery JDBC JPA API purequery API ibatis Spring SQLJ JPA Runtime purequery Runtime High Speed API JDBC w/purequery IBM Database purequery Metadata, Manageability

Data Studio och purequery ger bättre korrelation z/os LPAR Unix or Windows IMS MPP2 TxnA (PLANA) - PgmX - PgmY WAS 21.22.3.4 TxnA (Set Client App=TxnA) - ClassX - ClassY Data Studio och purequery ger samma granularitet för rapportering av WebSphere s DB2-resursåtgång som vi idag har med IMS: Per transaktion (Set Client Application name ) Per class-namn (program - package level accounting) Per address space / IP-adress Per end user ID (DB2 trusted context och DB2 Roles) App CPU TxnA 2.1 TxnB 8.3 Detta gör det lätt att isolera prestandaproblem, kapacitetsplanera, analysera programförändringar ur ett prestandaperspektiv, jämföra resursåtgång mellan moduler, etc.

Bättre möjligheter till problembestämning Applikationsutvecklaren För varje databasanrop Genererad SQL-text Åtkomstvägar Beräknad kostnad Beräknad svarstid Körtid och CPU-tid Dataåtkomst (getpages) Trimningsråd Java Profiling purequery DRDA Extentions Databasadministratör För varje SQL-sats Applikationsnamn Java class Java method Java object Radnummer i källkoden Källkodens sammanhang Transaktionsnamn (purequery) Tid för senaste kompilering

Vad händer nu? Vi har för avsikt att utreda framtida användning av persistensramverk för vidare utveckling av affärslogik i Java Hibernate JPA I samband med detta kommer vi att titta närmare på purequery pq är ej Open Source pq för med sig licenskostnader hur övertyga utvecklare om att purequery är ett bra sätt att göra åtkomst mot databaser hur väga driftsaspekter (tillgänglighet och prestanda) mot utvecklingsaspekter et cetera

Vad förväntar vi oss? purequery ger statisk SQL, med allt vad det innebär hög prestanda stabila åtkomstvägar hög säkerhet dokumenterade objektberoenden ger automatiskt vettig korrelationsinformation ger sammanhängande prestandainformation

Frågor?

Extramaterial

Performance monitor API JDBC-drivern har ett performancemonitor-api Redovisar tiden i respektive lager från applikationen och neråt start(db2systemmonitor.reset_times) start(db2systemmonitor.accumulate_times) stop() getapplicationtimemillis() getcoredrivertimemicros() getnetworkiotimemicros() getservertimemicros() Det vore ännu bättre om performance monitors kunde leverera denna information

Korrelation Det är viktigt att det går att korrelera en applikations aktivitet med aktiviteten i databasen I DB2:s JDBC-driver finns ett API för att sända korrelationsinformation till DB2. Fyra metoder på en DB2Connection Deprekerade idag JDBC 4.0 standardmetod

Deprekerade metoder DB2Connection.setDB2ClientUser DB2Connection.setDB2ClientWorkstation DB2Connection.setDB2ClientApplicationInformation DB2Connection.setDB2ClientAccountingInformation

JDBC 4.0-metod java.sql.connection.setclientinfo Exempel: conn.setclientinfo("clientuser", "Michael L Thompson"); conn.setclientinfo("clientworkstation, "sjwkstn1");

Klientinformation DB2 for z/os Vilka är de? DatabaseMetaData.getClientInfoProperties (i JDBC 4.0) Vilka stöds av DB2 för z/os? ClientWorkstation - max 18 tecken ClientUser - max 16 tecken ClientApplicationInformation - max 32 tecken ClientAccountingInformation - max 200 tecken ClientProgramInformation - max 80 tecken

Från WAS Under WAS har man endast tillgång till en WSConnection och måste därför använda sig av dess specifika metoder enligt följande exempel WSConnection conn = (WSConnection) ds.getconnection(); Properties props = new properties(); props.setproperty(wsconnection.client_id, "user123"); props.setproperty(wsconnection.client_location, "127.0.0.1"); props.setproperty(wsconnection.client_accounting_info, "accounting"); props.setproperty(wsconnection.client_application_name, "appname"); props.setproperty(wsconnection.client_other_info, "cool stuff"); conn.setclientinformation(props); conn.close()