#269 Performance-Basics: Indexstrukturen, Cache-Lokalität & Zugriffsmuster
#269 Performance-Basics: Indexstrukturen, Cache-Lokalität & Zugriffsmuster

#269 Performance-Basics: Indexstrukturen, Cache-Lokalität & Zugriffsmuster

Engineering Kiosk


Heute • 1 Std. 5 Min.

Index drauf und fertig. Klingt nach einem soliden Plan, oder? Leider nur so lange, bis die Daten wachsen, der Workload kippt oder der Optimizer plötzlich andere Entscheidungen trifft. Dann wird aus dem vermeintlichen Performance-Booster schnell ein Bremsklotz. Genau hier steigen wir in dieser Episode ein und schauen uns an, warum Indexstrukturen in Datenbanken viel mehr sind als ein technischer Quick Fix. Wir sprechen darüber, was ein Index eigentlich ist, wie Datenstruktur, Algorithmus, Hardware und Workload zusammenhängen und warum Begriffe wie Selektivität, Kardinalität, Full Table Scan, Write Amplification und Cache-Lokalität in der Praxis entscheidend sind. Außerdem schauen wir auf typische Datenbank-Themen wie Primary Key, B-Tree, Binary Search, Covering Index, Optimizer, Slow Query Log und Explain Statements. Dabei wird auch klar, warum ein Index manchmal hilft, manchmal ignoriert wird und manchmal sogar langsamer ist als gar kein Index. Wenn du mit PostgreSQL, MySQL, MariaDB oder ganz allgemein mit Datenbank-Performance arbeitest, bekommst du hier ein solides Fundament und einige praktische Denkanstöße für deinen Alltag als Softwareentwickler:in. Und ja, wir sprechen auch über Invisible Indexes in MySQL. Ein Feature, das fast wie ein Zaubertrick klingt, aber beim Testen und beim sicheren Aufräumen von Legacy-Systemen überraschend praktisch sein kann. Viel Spaß beim Hören und vielleicht beim anschließenden Blick auf dein Datenbankschema. Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners Das schnelle Feedback zur Episode: ? (top) ? (geht so) Anregungen, Gedanken, Themen und WünscheDein Feedback zählt! Erreiche uns über einen der folgenden Kanäle … EngKiosk Community: https://engineeringkiosk.dev/join-discord LinkedIn: https://www.linkedin.com/company/engineering-kiosk/Email: stehtisch@engineeringkiosk.devMastodon: https://podcasts.social/@engkioskBluesky: https://bsky.app/profile/engineeringkiosk.bsky.socialInstagram: https://www.instagram.com/engineeringkiosk/ Unterstütze den Engineering KioskWenn du uns etwas Gutes tun möchtest … Kaffee schmeckt uns immer Buy us a coffee: https://engineeringkiosk.dev/kaffee LinksEngineering Kiosk Meetups: https://engineeringkiosk.dev/meetup/Workingdraft Podcast: https://workingdraft.de/Engineering Kiosk Episoden zum Thema Kommunikation: https://engineeringkiosk.dev/tag/kommunikation/Engineering Kiosk Episoden zum Thema Datenbanken: https://engineeringkiosk.dev/tag/datenbanken/Engineering Kiosk Episode #151 Räumliche Indexstrukturen: Grundpfeiler in Geo-Systemen, Games und Machine Learning: https://engineeringkiosk.dev/podcast/episode/151-r%C3%A4umliche-indexstrukturen-grundpfeiler-in-geo-systemen-games-und-machine-learning/Engineering Kiosk Episode #255 Die DB skaliert nicht! OLTP vs. OLAP, Row vs. Column Stores, Parquet, CSV, Iceberg, DuckDB: https://engineeringkiosk.dev/podcast/episode/255-die-db-skaliert-nicht-oltp-vs-olap-row-vs-column-stores-parquet-csv-iceberg-duckdb/Very Large Databases Konferenzen: https://vldb.org/Engineering Kiosk Episode #265 One Billion Row Challenge: Java mit mmap, Unsafe & richtig vielen Bit-Tricks: https://engineeringkiosk.dev/podcast/episode/265-one-billion-row-challenge-java-mit-mmap-unsafe-richtig-vielen-bit-tricks/Bitmap-Index: https://de.wikipedia.org/wiki/Bitmap-IndexInvisible Indexes: https://dev.mysql.com/doc/refman/8.4/en/invisible-indexes.html Sprungmarken(00:00:00) Indexstrukturen in Datenbanken: Warum das Thema wichtig ist (00:04:39) Was ein Index wirklich ist: Datenstruktur, Hardware und Workload (00:06:46) Info/Werbung (00:07:46) Was ein Index wirklich ist: Datenstruktur, Hardware und Workload (00:14:57) Skalierung, Dataset-Änderungen und Observability für Indizes (00:21:38) Primary Key, Full Table Scan und binäre Suche einfach erklärt (00:25:51) Wann ein Index schadet: Selektivität, Kardinalität und Optimizer (00:31:04) Wie Datenbanken Indizes auswählen und Optimizer-Entscheidungen treffen (00:40:53) Hauptspeicher vs. Sekundärspeicher: B-Baum und Binärbaum (00:50:23) Praxis-Tipps für Index-Design in PostgreSQL, MySQL und Co. (00:55:24) Legacy-Systeme, Monitoring und sichere Änderungen an Indizes (01:03:14) Invisible Indexes in MySQL: Performance testen ohne Risiko HostsWolfgang Gassler (https://gassler.dev) Andy Grunwald (https://andygrunwald.com/) CommunityDiskutiere mit uns und vielen anderen Tech-Spezialist⋅innen in unserer Engineering Kiosk Community unter https://engineeringkiosk.dev/join-discord