{"id":26696,"date":"2024-05-20T10:18:42","date_gmt":"2024-05-20T08:18:42","guid":{"rendered":"https:\/\/www.sysbus.eu\/?p=26696"},"modified":"2024-05-13T10:50:53","modified_gmt":"2024-05-13T08:50:53","slug":"verbreitete-irrtuemer-in-puncto-caching-und-ihre-auswirkung-auf-die-system-performance","status":"publish","type":"post","link":"https:\/\/www.sysbus.eu\/?p=26696","title":{"rendered":"Verbreitete Irrt\u00fcmer in puncto Caching und ihre Auswirkung auf die System-Performance"},"content":{"rendered":"\n<p>Autor\/Redakteur: <a href=\"http:\/\/www.aerospike.com\">Behrad Babaee, Technology Evangelist bei Aerospike<\/a>\/gg<\/p>\n\n\n\n<p>Performante Anwendungen sind unternehmenskritisch f\u00fcr die Betrugserkennung, beim Online-Shopping oder in der Produktion. Erf\u00fcllen Anwendungen diese Anforderungen nicht, liefert h\u00e4ufig die dahinter liegende Datenbank zu wenig Leistung. Doch das Einziehen eines Zwischenspeichers f\u00fchrt nicht immer zur gew\u00fcnschten Verbesserung. F\u00fcr eine bestm\u00f6gliche L\u00f6sung gilt es daher, die Feinheiten des Cachings zu verstehen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2024\/05\/Behrad_Babaee_Querformat_1000x675px-002-1024x576.webp\" alt=\"\" class=\"wp-image-26698\" srcset=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2024\/05\/Behrad_Babaee_Querformat_1000x675px-002-1024x576.webp 1024w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2024\/05\/Behrad_Babaee_Querformat_1000x675px-002-300x169.webp 300w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2024\/05\/Behrad_Babaee_Querformat_1000x675px-002-768x432.webp 768w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2024\/05\/Behrad_Babaee_Querformat_1000x675px-002.webp 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Behrad Babaee, Technology Evangelist bei Aerospike. (Quelle: Aerospike)<\/figcaption><\/figure>\n\n\n\n<!--more-->\n\n\n\n<p>In der IT herrscht die weitverbreitete Ansicht, dass sich durch einen Zwischenspeicher die Last auf dem Datenbankserver verringern l\u00e4sst und damit Abfragen beschleunigt und so auch die Benutzerfreundlichkeit verbessert werden. Kurz: dass die Anwendung deutlich performanter wird. Dass dem nicht zwingend so ist, liegt in der Natur des Cachings.<\/p>\n\n\n\n<p><strong>Irrtum 1: Ein Zwischenspeicher verbessert die Datenbank-Performance<\/strong><\/p>\n\n\n\n<p>Beim <a href=\"https:\/\/aerospike.com\/glossary\/caching-process\/\">Caching<\/a> wird eine Teilmenge von Daten tempor\u00e4r in einem schnelleren Speichermedium gespeichert, um rascher auf h\u00e4ufig verwendete Daten zugreifen zu k\u00f6nnen. Ein Cache eignet sich jedoch nicht zum Speichern des gesamten Datenbestands. Denn schnellerer Speicher ist in der Regel nur begrenzt verf\u00fcgbar, teuer und \u2013 abh\u00e4ngig vom Medium \u2013 fl\u00fcchtig.<\/p>\n\n\n\n<p>Viele Datenbanken sind bereits mit einem internen Cache ausgestattet. Soll die Schnelligkeit von Datenbanken ohne integrierten Cache verbessert werden, wird im Software-Engineering gerne ein <a href=\"https:\/\/aerospike.com\/blog\/what-is-an-in-memory-database\/\">In-Memory-Speicher<\/a> vorgeschaltet. Doch Vorsicht: Die Integration einer Caching-Schicht macht eine langsame Datenbank nicht zwingend performanter, wie die n\u00e4chsten Irrt\u00fcmer zeigen.<\/p>\n\n\n\n<p><strong>Irrtum 2: Schnelligkeit gleich Antwortzeit<\/strong><\/p>\n\n\n\n<p>Vereinfacht gesagt gilt ein Computersystem als schnell, wenn es Anfragen prompt beantwortet. Geschwindigkeit ist also untrennbar mit der Reaktionszeit verbunden. Doch die Antwortzeiten bei hoher Belastung k\u00f6nnen stark von denen bei minimaler Arbeitslast abweichen. Daher ist eine verl\u00e4ssliche Aussage zur Geschwindigkeit nur anhand des Latenz-Perzentils m\u00f6glich. Dazu werden die Antwortzeiten eines Systems \u00fcber einen definierten Zeitraum aufgezeichnet und anschlie\u00dfend in aufsteigender Reihenfolge vom langsamsten zum schnellsten Wert geordnet.<\/p>\n\n\n\n<p>Der mittlere Wert ist das 50. Perzentil (P50) der Latenzzeit des Systems. Betr\u00e4gt der P50-Wert T Sekunden, ist die H\u00e4lfte der Systemantworten langsamer als T Sekunden. Und der 9. Wert (P90) in einer Liste mit zehn Positionen gibt an, in welcher Zeit 90 Prozent der Anfragen abgeschlossen wurden. Genauso lassen sich andere Perzentile wie P99 oder P99,9 berechnen. Wichtig zu verstehen: Der Unterschied in der Reaktionszeit ist zwischen P10 und P90 deutlich geringer als zwischen P99 und P99,9. Diese Diskrepanz ist auf das unvorhersehbare Verhalten verteilter Systeme zur\u00fcckzuf\u00fchren; im Folgenden kurz beschrieben.<\/p>\n\n\n\n<p><strong>Irrtum 3: Zwischenspeicher gleich bessere Cache-Trefferrate<\/strong><\/p>\n\n\n\n<p>Die Cache-Trefferrate bezeichnet den Prozentsatz, zu dem ein System erfolgreich Daten aus dem Zwischenspeicher abruft. Doch nicht immer sind die gesuchten Daten im Zwischenspeicher vorhanden. Das gilt unabh\u00e4ngig davon, welche Cache-Methode oder welcher Algorithmus zum Auslagern verwendet wird. Die Praxis zeigt, dass ein Zwischenspeicher die Wahrscheinlichkeit seltener unerw\u00fcnschter Ereignisse \u2013 und damit einer schlechteren Trefferquote \u2013 sogar noch erh\u00f6hen kann.<\/p>\n\n\n\n<p>Was hei\u00dft das konkret? In einer komplexen Anwendung sind an der Bearbeitung einer High-Level-Abfrage mehrere Dienste und Komponenten beteiligt. Einige von ihnen m\u00fcssen die Datenbank abfragen. Nehmen wir an, die Cache-Trefferrate ist P und es gibt n gleichzeitige Datenbankzugriffsabfragen. Dann ist die Wahrscheinlichkeit, dass alle Abfragen n direkt aus dem Zwischenspeicher bedient werden P<sup>n<\/sup>.<\/p>\n\n\n\n<p>Betr\u00e4gt beispielsweise die Cache-Trefferwahrscheinlichkeit 50 Prozent und es gibt f\u00fcnf parallele Abfragen (n=5), sind mit einer Wahrscheinlichkeit von 3,1 Prozent (0,5<sup>5<\/sup> = 0,031) alle diese Abfragen Cache-Treffer. Doch eine Abfrage wird erst dann vollst\u00e4ndig verarbeitet, wenn die Abfragen all ihrer Komponenten beantwortet wurden. Das bedeutet, dass die Abfrage in 96,9 Prozent der F\u00e4lle nicht von der Existenz des Zwischenspeichers profitiert. Der Grund: Sie muss noch auf den Abschluss mindestens einer Abfrage warten, welche auf die langsame Datenbank zugreifen muss.<\/p>\n\n\n\n<p>In der Praxis besteht das Ziel deshalb darin, die Antwortzeit des Dienstes bei Perzentilen wie P99 zu verbessern. Um die P99-Latenzzeit einer Aufgabe mit f\u00fcnf Arbeitsschritten jedoch durch die Einf\u00fchrung eines Cache zu optimieren, m\u00fcsste die Trefferquote satte 99,8 Prozent (0,998<sup>5<\/sup> = 0,99) betragen.<\/p>\n\n\n\n<p><strong>Fazit<\/strong><\/p>\n\n\n\n<p>Es ist ein weit verbreitetes Missverst\u00e4ndnis, dass die Platzierung eines Zwischenspeichers vor einer Datenbank \u2013 sei es intern, extern oder integriert \u2013 die Leistung der Anwendung ma\u00dfgeblich verbessert. Unternehmen sind daher gut beraten, schon bei der Wahl einer Datenbank auf deren Performanz zu achten. Sie sollten eine Datenbank w\u00e4hlen, die aufgrund ihrer Technologie bereits ohne Cache besser abschneidet als Datenbanken mit integriertem Cache.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Performante Anwendungen sind unternehmenskritisch f\u00fcr die Betrugserkennung, beim Online-Shopping oder in der Produktion. Erf\u00fcllen Anwendungen diese Anforderungen nicht, liefert h\u00e4ufig die dahinter liegende Datenbank zu wenig Leistung. Doch das Einziehen eines Zwischenspeichers f\u00fchrt nicht immer zur gew\u00fcnschten Verbesserung. F\u00fcr eine bestm\u00f6gliche L\u00f6sung gilt es daher, die Feinheiten des Cachings zu verstehen.<\/p>\n","protected":false},"author":81,"featured_media":26698,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[8,10141],"tags":[18224,8198,18226,18228,18225,18227],"class_list":["post-26696","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artikel","category-hintergrund","tag-aerospike","tag-caching","tag-datenbank-performance","tag-latenz-verteilter-systeme","tag-nosql-datenbank","tag-perzentil"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/26696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/users\/81"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26696"}],"version-history":[{"count":1,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/26696\/revisions"}],"predecessor-version":[{"id":26699,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/26696\/revisions\/26699"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/media\/26698"}],"wp:attachment":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}