diff --git a/chapters/thesis/appendix02_timing.sh b/chapters/thesis/appendix02_timing.sh index 8b8f3bf..a5af4c7 100644 --- a/chapters/thesis/appendix02_timing.sh +++ b/chapters/thesis/appendix02_timing.sh @@ -84,9 +84,9 @@ hostname="http://localhost:8080/WedekindJSF-1.0.0" # the Array of the Urls url_arr=( "$hostname/index.xhtml" - #"$hostname/view/document/list.xhtml" - "$hostname/view/document/list_mv.xhtml" - #"$hostname/view/correspondent/list.xhtml" + "$hostname/view/document/list.xhtml" + #"$hostname/view/document/list_mv.xhtml" + #"$hostname/view/correspondent/list.xhtml" #"$hostname/view/person/list.xhtml" ) diff --git a/chapters/thesis/chapter04.tex b/chapters/thesis/chapter04.tex index e5d4365..54637e0 100644 --- a/chapters/thesis/chapter04.tex +++ b/chapters/thesis/chapter04.tex @@ -309,9 +309,39 @@ in den Java-Objekten fast identisch sind. Und in der Datenbank sind die Anfragen \subsection{cached queries} \label{sec:performance-checking:investigation-application:cached-query} +Über die Einstellung \textit{openjpa.jdbc.QuerySQLCache} wird der Cache aktiviert. Hierbei können Abfragen angeben +werden, die aus dem Cache ausgeschlossen werden. Der QueryCache wiederrum beachtet aber nur Abfragen die keine +Parameter verwenden. Das sieht man auch entsprechend der Auswertung der Aufrufe \ref{tbl:measure-cached-queries}, +dass hier keine Veränderung der Aufrufzeiten stattgefunden hat. Gleich ob man mit \ac{JPQL} oder mit der Criteria API +abfragt. + +\begin{table}[h!] + \centering + \begin{tabular}{|r|r|r|r|r|r|r|r|} + \hline + & \multicolumn{3}{|c|}{Aufrufzeit} & & \multicolumn{3}{|c|}{RSS} \\ + \hline + \# & min & avg & max & Queries & davor & danach & diff \\ + \hline + 1 & 391 & 593 & 1533 & 12256 & 843.63 & 1009.79 & 116.16 \\ + 2 & 281 & 365 & 584 & 12080 & 996.28 & 1114.60 & 118.32 \\ + 3 & 295 & 353 & 464 & 12080 & 1103.30 & 1201.47 & 98.17 \\ + 4 & 280 & 292 & 324 & 12080 & 1191.56 & 1298.46 & 106.90 \\ + \hline + \end{tabular} + \caption{Messung mit aktiviertem Cached Queries} + \label{tbl:measure-cached-queries} +\end{table} + \subsection{Umgestalten der Datenbanktabellen} \label{sec:performance-checking:investigation-application:new-table} \subsection{Verkleinerung der Abfragen} \label{sec:performance-checking:investigation-application:smaller-query} +\subsection{Statische Webseiten} +\label{sec:performance-checking:investigation-application:static-website} + +Wenn man die Dokumentenliste als statische Webseiten ablegt, werden die Zugriffszeiten sehr kurz sein. Darüber hinaus +funktionieren in statische Webseiten aber keine Suche oder eine Sortierung. Sonst müsste man für jede mögliche +Sortierung und Suchanfrage einen Satz der Dokumentenliste als statische Webseite bereitstellen. \ No newline at end of file diff --git a/thesis-beamer.pdf b/thesis-beamer.pdf index e5e3110..42ff176 100644 Binary files a/thesis-beamer.pdf and b/thesis-beamer.pdf differ diff --git a/thesis-beamer.tex b/thesis-beamer.tex index 5fa7498..aa68c5b 100644 --- a/thesis-beamer.tex +++ b/thesis-beamer.tex @@ -13,8 +13,8 @@ \title{\myTitle} %\subtitle{} \author[M. Galster]{\myName} -\footlinetext{\insertshortauthor \hspace{4em} \inserttitle} -\institute{University~of~Hagen,~Germany} +\footlinetext{\insertshortauthor \hspace{4em} Multi-Layer Optimization Strategies for Enhanced Performance in Digital Editions} +\institute{Universität~in~Hagen,~Deutschland} \date{\myTime} \begin{document} @@ -44,17 +44,85 @@ \end{frame} % -- SLIDES -- -\section{Ausgangsproblem} +\section{Aufbau} \begin{frame} - \frametitle{Ausgangsproblem} + \frametitle{Schichten} - Anzeige der Schichten des Systems + \begin{figure}[centered] + \begin{tikzpicture}[scale=.6,transform shape,node distance=4em, + block/.style={rectangle, rounded corners,minimum width=3cm,minimum height=.5cm,text centered, draw=black,fill=green!30}, + lineArrow/.style={arrows={-Latex[length=5pt 3 0]}}, + every fit/.style={inner sep=.4em,draw} + ] + %https://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html + \node (browser) [block] {WebBrowser}; + \node (fitClient) [rounded corners,fit=(browser)] {}; + \node [left] at (fitClient.west) {Client}; + + \node (JSF) [block,below of=browser,node distance=5em] {Java Server Faces}; + \node (EJB) [block,below of=JSF] {Enterprise Java Beans}; + \node (JPA) [block,below of=EJB] {Java Persistance API}; + \node (openJPA) [block, below of=JPA] {OpenJPA Cache}; + \node (fitGlassfish) [rounded corners,fit=(JSF) (EJB) (JPA) (openJPA)] {}; + \node [left] at (fitGlassfish.west) {Glassfish}; + + \node (memoryBuffers) [block, below of=openJPA] {Memory Buffers}; + \node (services) [block, right of=memoryBuffers, xshift=2cm] {Services}; + \node (database) [block, below of=memoryBuffers] {Database}; + \node (fitPostgreSQL) [rounded corners,fit=(memoryBuffers) (services) (database)] {}; + \node [left] at (fitPostgreSQL.west) {PostgreSQL}; + + \node (fitServer) [rounded corners,fit=(fitGlassfish) (fitPostgreSQL),inner xsep=3em] {}; + \node [left] at (fitServer.west) {Server}; + + \draw[lineArrow] (browser)--(JSF); + \draw[lineArrow] (JSF)--(EJB); + \draw[lineArrow] (EJB)--(JPA); + \draw[lineArrow] (JPA)--(openJPA); + \draw[lineArrow] (openJPA)--(memoryBuffers); + \draw[lineArrow] (memoryBuffers)--(database); + \draw[lineArrow] (services)|-(database); + \end{tikzpicture} + %\caption{Ablauf einer Web-Anfrage} + \label{fig:webrequest} + \end{figure} + +\end{frame} + +\section{Untersuchungen} +\begin{frame} + \frametitle{Allgemein} + --- Untersuchung vorher --- \end{frame} \begin{frame} - Definieren der Optimierungsansätze + \frametitle{Caching mit OpenJPA} + --- OpenJPA --- \end{frame} +\begin{frame} + \frametitle{Caching in JPA} +\end{frame} + +\begin{frame} + \frametitle{Caching in EJB} +\end{frame} + +\begin{frame} + \frametitle{Abfragen mit JPQL} +\end{frame} + +\begin{frame} + \frametitle{Abfragen mit Criteria API} +\end{frame} + +\begin{frame} + \frametitle{Abfragen über materialized views} +\end{frame} + +\begin{frame} + \frametitle{Cached Queries} +\end{frame} %% -- SLIDE -- REFERENCES % hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen diff --git a/thesis.pdf b/thesis.pdf index 0678e22..5e84714 100644 Binary files a/thesis.pdf and b/thesis.pdf differ