
Ottimizzazione delle prestazioni
Database indexing, ottimizzazione delle query, gem Bullet, rack-mini-profiler, concorrenza/Puma, thread-safety, connection pool
1Qual è lo scopo principale dell'aggiunta di un index su una colonna del database?
Qual è lo scopo principale dell'aggiunta di un index su una colonna del database?
Risposta
Un index accelera le query di ricerca creando una struttura dati ottimizzata (di solito un B-tree) che evita di scansionare tutte le righe della tabella. Senza index, il database esegue un sequential scan che può essere molto lento su tabelle di grandi dimensioni. Le colonne usate di frequente nelle clausole WHERE, ORDER BY o nei join sono candidate ideali per l'indicizzazione.
2Come creare un index composito sulle colonne user_id e created_at in una migration Rails?
Come creare un index composito sulle colonne user_id e created_at in una migration Rails?
Risposta
Il metodo add_index accetta un array di colonne per creare un index composito. L'ordine delle colonne è importante: l'index sarà efficiente per le query che filtrano prima su user_id e poi su created_at, ma non per le query che filtrano solo su created_at. Un index composito è ottimale per le query che usano le colonne da sinistra a destra.
3Che cos'è il problema N+1 nel contesto di ActiveRecord?
Che cos'è il problema N+1 nel contesto di ActiveRecord?
Risposta
Il problema N+1 si verifica quando una query iniziale recupera N record, dopodiché vengono eseguite N query aggiuntive per caricare le associazioni di ciascun record. Ad esempio, caricare 100 posts e poi effettuare 100 query individuali per gli autori. Questo pattern moltiplica il numero di query e degrada gravemente le prestazioni. La soluzione è usare includes, preload o eager_load per caricare le associazioni in una o due query.
Quale metodo ActiveRecord usare per risolvere il problema N+1 caricando le associazioni in anticipo?
Qual è il ruolo del gem Bullet nell'ottimizzazione delle prestazioni di Rails?
+23 domande da colloquio
Altri argomenti di colloquio Ruby on Rails
Fondamenti di Ruby
Programmazione orientata agli oggetti in Ruby
Fondamenti di Rails
Routing & Controllers
Fondamenti di ActiveRecord
Views e template ERB
Associazioni ActiveRecord
Query ActiveRecord avanzate
Form Rails
Autenticazione e autorizzazione
Asset Pipeline moderno e frontend
Modalità API di Rails
Test con RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Strategie di caching
Migrazioni avanzate
Rails Engines e app modulari
Design Pattern in Rails
Metaprogrammazione in Ruby
Sicurezza in Rails
GraphQL con Rails
Deployment e Produzione
Monitoring & Logging
Strategie di upgrade di Rails
Padroneggia Ruby on Rails per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis