[release/6.0] Microsoft.Data.Sqlite: Avoid re-sending PRAGMA key on pooled connections #29215
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.
Fixes #28967
Customer Impact
Connection pooling was designed to improve throughput in both high-traffic web scenarios and when using encryption. However, customers reported that when using encryption via SQLCipher, performance had not improved--it was still deriving the encryption key every time a connection was opened. This PR avoids that behavior and ensures the key is only derived once per pooled connection.
Regression?
No.
Risk
Low. This just moves the logic to a place where it will only be executed once per pooled connection instead of every time an ADO.NET connection is opened. The logic will continue to be skipped when not using encryption.
Verification
Manually verified the new perf characteristics. This simple benchmark goes from 5078 ms to 124.