diff --git a/chapters/expose/chapter01.tex b/chapters/expose/chapter01.tex index b0c2e69..5d6c8ad 100644 --- a/chapters/expose/chapter01.tex +++ b/chapters/expose/chapter01.tex @@ -55,6 +55,41 @@ Hierbei ist auch ein Vergleich mit anderen Technologien angedacht. % Aktell 3546-1.pdf Page 404 +Die Speicherveraltung des PostgreSQL-Server muss für Produktivsysteme angepasst werden \citep[34-38]{Eisentraut2013}. +Hierunter fallen die \textbf{shared\_buffers} die bei +ca. 10 bis 25 Prozent des verfügbaren Arbeitsspeichers liegen sollte, mit dieser wird das häufige schreiben des Buffers durch Änderung +von Daten und Indexen auf die Festplatte reduziert. +Die Einstellung \textbf{temp\_buffers} die definiert wie groß der Speicher für temporäre Tabellen pro Verbindung maximal werden darf, sollte +ebenfalls überprüft werden, da ein zu kleiner Wert bei großen temporären Tabellen zu einem signifikanten Leistungseinbruch führt, wenn +die Tabellen nicht im Hauptspeichern sondern in einer Datei beareitet werden. +Der \textbf{work\_mem} definiert die Obergrenze des zur Verfügung gestellt Hauptspeichers pro Datenbankoperation wie effizientes Sortieren, +Verknüpfen oder Filtern. Auch wird im Falle eines zu klein +gewählten Speichers auf temporäre Dateien auf der Festplatte ausgewichen, was ebenfalls zu signifikaten Leistungsinbrüchen führt. +Die \textbf{maintenance\_work\_mem} wird bei Verwaltungsoperation wie Änderung und Erzeugung von Datenbankobjekten als Obergrenze definiert. +Aber auch für die Wartungsaufgaben \textbf{Vacuum}, die fragmentierte Tabellen aufräumt und somit die performance hebt. Welche Regelmässig +durchgeführt werden sollte. + +Die Wartung des Datenbanksystemes ist eine der wichtigen Aufgaben und sollte regelmässig durchgeführt werden, damit die Performance des +Systems durch die Änderung des Datenbestandes nicht einbricht \citep[75]{Eisentraut2013}. Hierfür gibt es den \textbf{VACUUM}-Befehl, der +entweder per Hand oder automatisch durch das Datenbanksystem ausgeführt werden soll. +Neben dem aufräumen durch \textbf{VACUUM} sollten auch die Planerstatistiken mit \textbf{ANALYZE} \citep[83]{Eisentraut2013} aktuell +gehalten werden. Damit die Anfragen durch den Planer richtig optimiert werden können. +Für beide Wartungsaufgaben gibt es den Autovacuum-Dienst. Dieser sollte aktiv und richtig konfiguriert sein. + +Mit dem Tool \textbf{pgFouine} \citep[155]{Eisentraut2013} können die Logs des PostgreeSQL Server im Nachgang analysiert werden und auf +Probleme hin untersucht werden. Hiermit kann sehr einfach die häufigsten bzw. langsamsten Anfragen ermittelt werden. + +Für weitere Optimierungen müssen dann die Anfragen einzeln überprüft werden. Hierfür ist es sinnvoll die Ausführungspläne der Abfrage +zu analysieren \citep[252]{Eisentraut2013}. Hierbei ist es wichtig die verschiedenen Plantypen und ihre Kosten zu kennen, sowie die +angegeben Werte für die Plankosten zu verstehen. Hinzu kommt noch, dass man den tatsächlich ausgeführten Plan mit dem ursprünglichen +Plan vergleichen sollte \citep[254]{Eisentraut2013}. Eine er wichtigsten Aussage hierbei ist, ob die Zeilenschätzung akkurat war. +Größere Abweichung weißen häufig auf veraltete Statistiken hin. + + +\citep[60]{MüllerWehr2012} + +% Zum ende noch, warum wird das gemacht? => Weil Datenbank-Definition immer unterschiedlich sind, und die Optimierung an den entsprechenden +% Datenbestand angepasst werden muss \section{Vorgehen bei der Umsetzung} % Anm: eine mögliche Vorgehensweise. Bei der Beschreibung der Vorgehensweise beziehen Sie sich dann natürlich auf den oben beschrieben Stand in Forschung und Technik diff --git a/chapters/expose/chapter02.tex b/chapters/expose/chapter02.tex index 00068a8..9964129 100644 --- a/chapters/expose/chapter02.tex +++ b/chapters/expose/chapter02.tex @@ -16,6 +16,7 @@ \item Einbau von Performancecounter \item Aktivieren von Performancecounter am Postgresql \item Laufzeitanalyse starten + \item Befragung der Benutzer und Entwickler \end{enumerate} \item Optimierung \begin{enumerate} diff --git a/expose-ref.bib b/expose-ref.bib index f3060c5..5fba196 100644 --- a/expose-ref.bib +++ b/expose-ref.bib @@ -75,6 +75,17 @@ eprint = {https://www.hanser-elibrary.com/doi/pdf/10.3139/9783446473157} } +% Buch PostgreSQL - Administration (Hagen Leihe) +@book{Eisentraut2013, + AUTHOR = {Eisentraut, Peter AND Helmle, Bernd}, + YEAR = {2013}, + TITLE = {PostgreSQL-Administration - }, + EDITION = {}, + ISBN = {978-3-868-99362-2}, + PUBLISHER = {O'Reilly Germany}, + ADDRESS = {Köln}, +} + % File: müller-wehr-2012-java-persistence-api-2.pdf / Ehemaliger Link: doi:10.3139/9783446431294 @book{MüllerWehr2012, author = {Müller, Bernd and Wehr, Harald}, @@ -92,4 +103,5 @@ % - OpenJPA: https://openjpa.apache.org/documentation.html % - IBN OpenJPA Cache: https://www.ibm.com/docs/de/was/8.5.5?topic=applications-configuring-openjpa-caching-improve-performance + % File: postgresql-15-A4.pdf \ No newline at end of file diff --git a/expose.pdf b/expose.pdf index cbc9c7b..8d85eea 100644 Binary files a/expose.pdf and b/expose.pdf differ diff --git a/expose.tex b/expose.tex index 954607c..3eb1cbf 100644 --- a/expose.tex +++ b/expose.tex @@ -85,6 +85,7 @@ % Allgemeine Webseite: % https://www.overleaf.com/learn/latex/Bibliography_management_with_natbib +% https://postgrespro.com/docs/postgresql/14/runtime-config-resource % Frank Wedekind: % https://books.google.de/books?hl=de&lr=&id=3qO8DQAAQBAJ&oi=fnd&pg=PA1&dq=frank+wedekind&ots=S4LHWQ0h2e&sig=Mz8PEGF-md4n3AwH9cgXq-5vUac#v=onepage&q=frank%20wedekind&f=false diff --git a/marco-galster-config.tex b/marco-galster-config.tex index d4638d0..90d38fb 100644 --- a/marco-galster-config.tex +++ b/marco-galster-config.tex @@ -19,7 +19,7 @@ \newcommand{\myId}{8335710\xspace} \newcommand{\myProf}{Prof. Dr. Uta St\"orl\xspace} \newcommand{\referent}{Referentin\xspace}% Referentin/Referent, depending on the gender of your prof -\newcommand{\mySupervisor}{----\xspace} +\newcommand{\mySupervisor}{Sebastian Bruchhaus\xspace} \newcommand{\supervisor}{Betreuer\xspace}% Betreuerin/Betreuer, depending on the gender of your supervisor \newcommand{\myFaculty}{Fakult\"at f\"ur Mathematik und Informatik\xspace} \newcommand{\myUni}{FernUniversit\"at in Hagen\xspace}