This page describes the Cloud SQL for PostgreSQL index advisor and how you can view and apply its index recommendations.
Cloud SQL for PostgreSQL offers a fully managed index advisor that tracks the queries your database handles regularly. Periodically, the index advisor analyzes these queries to recommend new indexes that can improve query performance. The index advisor lets you detect and fix performance issues with systems and queries.
How does the index advisor work?The index advisor helps you improve query processing by doing the following:
The index advisor stores and displays the
CREATE INDEX
command containing the database name, schema name, table name, and column names. The tracked queries are all normalized queries with all literals removed.
Index recommendations are encrypted at rest.
LimitationsCloud SQL for PostgreSQL index advisor has the following limitations:
CREATE INDEX
recommendations only.To obtain index advisor recommendations, you must use Cloud SQL Enterprise Plus edition and enable query insights for Cloud SQL Enterprise Plus edition for your Cloud SQL instance.
Required roles and permissionsTo get the permissions that you need to obtain index advisor recommendations, ask your administrator to grant you the Cloud SQL Viewer (roles/cloudsql.viewer
) IAM role on the project that hosts the Cloud SQL instance. For more information about granting roles, see Manage access to projects, folders, and organizations.
This predefined role contains the permissions required to obtain index advisor recommendations. To see the exact permissions that are required, expand the Required permissions section:
Required permissionsThe following permissions are required to obtain index advisor recommendations:
databaseinsights.recommendations.query
databaseinsights.resourceRecommendations.query
You might also be able to get these permissions with custom roles or other predefined roles.
Enable index advisor recommendationsTo enable index advisor recommendations, do the following:
In the Google Cloud console, go to the Cloud SQL Instances page.
.To disable index advisor recommendations, do the following:
In the Google Cloud console, go to the Cloud SQL Instances page.
Cloud SQL automatically runs the index advisor analysis periodically. To view index advisor recommendations, use the Query insights dashboard. You can also view and query the index advisor recommendations as a table or request an on-demand analysis and report at any time.
View and filter recommendations in the Query insights dashboardIn the Google Cloud console, go to the Cloud SQL Instances page.
CREATE INDEX
recommendations, add a filter for Recommendation: Create Indexes.To view index recommendations for a specific query, follow these steps:
In the Google Cloud console, go to the Cloud SQL Instances page.
You can read its results through the following table views located in each of your databases:
google_db_advisor_recommended_indexes
: lists any recommended new indexes for each database. It also includes estimates of the storage required for each index, and the number of queries that each index can affect.
google_db_advisor_workload_report
: lists each query for which the advisor recommends one or more new indexes. Each row summarizes the recommendations for the relevant query.
For example, to see the results of the most recent index-recommendation analysis, formatted as a table, run this query:
SELECT * FROM google_db_advisor_recommended_indexes;
If the index advisor's most recent analysis finds no recommendations, then this query returns a table with no rows.
Because all of these reports exist as ordinary database views, you can write queries that filter or present this information. For example, to see a report that pairs recommended indexes with their full associated query, join the google_db_advisor_workload_report
and google_db_advisor_workload_statements
views on their respective query_id
columns:
SELECT DISTINCT recommended_indexes, query
FROM google_db_advisor_workload_report r, google_db_advisor_workload_statements s
WHERE r.query_id = s.query_id;
Manually request an index analysis
Rather than wait for the index advisor's next scheduled analysis, you can request that Cloud SQL for PostgreSQL run an analysis immediately and display its report. For Cloud SQL for PostgreSQL, you need to wait at least 15 minutes after enabling index advisor to run a manual analysis. To do this, run this SQL function:
SELECT * FROM google_db_advisor_recommend_indexes();
After the analysis finishes, Cloud SQL for PostgreSQL displays a table-formatted report with the description and estimated storage needs of any recommended indexes. If the analysis finds no new indexes to recommend, then the view contains no rows.
Note that the user role that runs this command can affect the recommendations displayed. Cloud SQL for PostgreSQL limits its display to index recommendations based on queries issued by the current database user.
Create recommended indexesYou can create recommended indexes from the Query insights dashboard or from a database table view.
Create a recommended index using the Query insights dashboardTo create a recommended index using the Query insights dashboard, do the following:
In the Google Cloud console, go to the Cloud SQL Instances page.
CREATE INDEX
commands are copied to your clipboard.To create the recommended indexes, run the commands that were copied to your clipboard, for example:
CREATE INDEX ON "public"."demo_order" ("customer_id");
The index
column of the google_db_advisor_recommended_indexes
view contains, in each row, a complete PostgreSQL CREATE INDEX
DDL statement for generating the index recommended in that row.
To apply that row's recommendation, run that DDL statement, exactly as presented. This includes copying it onto your clipboard and pasting it into a psql
prompt.
For example, consider this output from manually running an analysis, using the query described in the previous section:
index | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
CREATE INDEX ON "School"."Students"("age") | 3
(1 row)
This report contains a single recommendation: adding a single-column index on the age
column in the School
schema's Students
table. To apply this advice, enter a DDL query as represented within the report:
CREATE INDEX ON "School"."Students"("age");
View impacted queries
In the Google Cloud console, go to the Cloud SQL Instances page.
The google_db_advisor_workload_statements
view contains a list of all the queries that the index advisor has tracked, as well as important metadata for each one, such as the following metrics:
You can reset the index advisor's behavior on an instance by clearing its tracked queries. To do this, run this SQL function:
SELECT google_db_advisor_reset();
Cloud SQL for PostgreSQL empties the index advisor's collection of tracked queries immediately.
What's nextRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4