
Performance-Optimierung
Database indexing, Query-Optimierung, Bullet gem, rack-mini-profiler, Nebenläufigkeit/Puma, thread-safety, connection pool
1Was ist der Hauptzweck des Hinzufügens eines Index auf einer Datenbankspalte?
Was ist der Hauptzweck des Hinzufügens eines Index auf einer Datenbankspalte?
Antwort
Ein Index beschleunigt Suchanfragen, indem er eine optimierte Datenstruktur (üblicherweise ein B-tree) erstellt, die das Scannen aller Zeilen der Tabelle vermeidet. Ohne Index führt die Datenbank einen sequential scan durch, der bei großen Tabellen sehr langsam sein kann. Spalten, die häufig in WHERE-Klauseln, ORDER BY oder Joins verwendet werden, sind ideale Kandidaten für die Indexierung.
2Wie erstellt man einen zusammengesetzten Index auf den Spalten user_id und created_at in einer Rails-Migration?
Wie erstellt man einen zusammengesetzten Index auf den Spalten user_id und created_at in einer Rails-Migration?
Antwort
Die Methode add_index akzeptiert ein Array von Spalten, um einen zusammengesetzten Index zu erstellen. Die Reihenfolge der Spalten ist wichtig: Der Index ist effizient für Abfragen, die zuerst nach user_id und dann nach created_at filtern, aber nicht für Abfragen, die nur nach created_at filtern. Ein zusammengesetzter Index ist optimal für Abfragen, die die Spalten von links nach rechts verwenden.
3Was ist das N+1-Problem im Kontext von ActiveRecord?
Was ist das N+1-Problem im Kontext von ActiveRecord?
Antwort
Das N+1-Problem tritt auf, wenn eine erste Abfrage N Datensätze abruft und dann N zusätzliche Abfragen ausgeführt werden, um die Assoziationen jedes Datensatzes zu laden. Zum Beispiel das Laden von 100 Posts und anschließend 100 einzelne Abfragen für die Autoren. Dieses Muster vervielfacht die Anzahl der Abfragen und verschlechtert die Performance erheblich. Die Lösung besteht darin, includes, preload oder eager_load zu verwenden, um die Assoziationen in einer oder zwei Abfragen zu laden.
Welche ActiveRecord-Methode sollte man verwenden, um das N+1-Problem durch vorzeitiges Laden der Assoziationen zu lösen?
Welche Rolle spielt das Bullet gem bei der Performance-Optimierung in Rails?
+23 Interview-Fragen
Weitere Ruby on Rails-Interviewthemen
Ruby-Grundlagen
Objektorientierte Programmierung in Ruby
Rails-Grundlagen
Routing & Controllers
ActiveRecord-Grundlagen
Views & ERB-Templates
ActiveRecord-Assoziationen
Fortgeschrittene ActiveRecord-Abfragen
Rails-Formulare
Authentifizierung & Autorisierung
Moderne Asset Pipeline & Frontend
Rails API-Modus
Testen mit RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Caching-Strategien
Fortgeschrittene Migrationen
Rails Engines & modulare Apps
Rails Design Patterns
Ruby-Metaprogrammierung
Rails-Sicherheit
GraphQL mit Rails
Deployment & Produktion
Monitoring & Logging
Rails-Upgrade-Strategien
Meistere Ruby on Rails für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten