feat: add index on group_membership(identity_zone_id, origin) #3679
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces an index on group_membership(identity_zone_id, origin) for PostgreSQL
We experienced an issue with deleting an identity provider when the group_membership table had a very large number of entries in a single zone, where we ran into our configured timeouts on DB side while trying to delete the group_memberships. The delete was triggered by this statement during idp deletion: https://github.com/cloudfoundry/uaa/blob/develop/server/src/main/java/org/cloudfoundry/identity/uaa/scim/jdbc/JdbcScimUserProvisioning.java#L521
Even when there was not a single entry with the same origin, the deletion failed as the DB needed to perform a sequential scan on the complete zone just to find that there is nothing to delete.
With this index this issue disappeared.
We saw that this index also took a long time to create, but it resolved our problem and we did not see negative impact on the DB performance so far.