# Telescope Model Hydration Analyzer PRO
Category | Severity | Time To Fix |
---|---|---|
🚀 Performance | Major | 30 minutes |
Class: Enlightn\EnlightnPro\Analyzers\Performance\TelescopeModelHydrationAnalyzer
# Introduction
This analyzer scans your Telescope records to detect routes that hydrate too many models.
By default, all routes that hydrate more than 50 models are flagged.
# How To Reduce Model Hydrations
Some good practices to reduce model hydrations include:
- Using lazy collections (opens new window) where possible.
- Using query chunking (opens new window) where possible. Note that this does not reduce the number of model hydrations, but it does reduce the peak hydrations and thereby, reduces peak memory usage.
- Using bulk queries rather than individual queries that return hydrated models.
# Configuration Options
You can customize the limit for number of hydrated models (default: 50) using the hydration_limit
configuration option:
'hydration_limit' => 50,
# Requirements
This Telescope analyzer requires you to enable the Telescope ModelWatcher
and RequestWatcher
.
# How To Reset Findings
This analyzer does all its calculations based on the Telescope records in the database. So, if you happen to fix a model hydration issue, you may want to prune your Telescope records so that the next time Enlightn is run, it does not pick up the routes that have already been fixed.
Generally, it would be a good practice to prune your Telescope records each time you deploy fresh code or push a new release. If your application is relatively stable, consider pruning Telescope records at a frequency (say every week or daily).
# Query Performance of Telescope Analyzers
All Telescope analyzers work by querying your database for Telescope records. For enhanced query performance, we recommend that you convert the content
column of your telescope_entries
table to a json
data type. Note that for PostgresQL this change is mandatory, since PostgresQL does not allow json queries on text data types.
A migration code snippet for changing the column data type is provided here.
Telescope analyzer queries can take considerable time if you have a large number of Telescope records stored in your database. To further enhance performance, we recommend regularly pruning your Telescope entries.
Note that this query is only executed when you run the enlightn
Artisan command and does not impact the performance of your application.
# Skip Condition
This analyzer is skipped if your application does not have Laravel Telescope (opens new window) installed.