≈709 tokens on demand. Your agent reads this file only when SKILL.md points to it.
MySQL/MariaDB RDS Proxy Pinning Risks
Pinning means the proxy locks a frontend connection to a specific backend database connection, preventing multiplexing. When pinned, the proxy can't reuse that backend connection for other clients, reducing the benefit of connection pooling.
High Pinning Risk (defeats proxy purpose)
| Pattern |
Why It Pins |
Diagnostic Query |
| Prepared statements (server-side) |
Proxy can't move prepared state between backends |
SHOW GLOBAL STATUS LIKE 'Com_stmt_prepare'; — if high, pinning is frequent |
| SET SESSION variables |
Session state is backend-specific |
SELECT s.VARIABLE_NAME, s.VARIABLE_VALUE AS session_val, g.VARIABLE_VALUE AS global_val FROM performance_schema.session_variables s JOIN performance_schema.global_variables g USING (VARIABLE_NAME) WHERE s.VARIABLE_VALUE <> g.VARIABLE_VALUE; — rows where session differs from global indicate a SET SESSION was issued |
User-defined variables (@var) |
Session-scoped, can't be transferred |
Check application code for SET @var = ... patterns |
| LOCK TABLES |
Explicit lock is backend-specific |
SHOW GLOBAL STATUS LIKE 'Com_lock_tables'; |
| GET_LOCK() / RELEASE_LOCK() |
Advisory locks are session-scoped |
Check application code for GET_LOCK() usage |
| Temporary tables |
CREATE TEMPORARY TABLE is session-scoped |
SHOW GLOBAL STATUS LIKE 'Created_tmp_tables'; — high values indicate risk |
| FOUND_ROWS() |
Depends on previous query's state |
Check application code |
Medium Pinning Risk
| Pattern |
Notes |
| SET NAMES / SET CHARACTER SET |
Pins if different from proxy default. Configure proxy default charset to match app. |
| SET TRANSACTION ISOLATION LEVEL |
Pins for the duration of the transaction |
| Multi-statement transactions |
Pinned for transaction duration (expected, not a problem if transactions are short) |
Low / No Pinning Risk
| Pattern |
Notes |
| Simple SELECT/INSERT/UPDATE/DELETE |
No session state. Full multiplexing. |
| Autocommit single statements |
No pinning. |
| Connection attributes |
Proxy handles these transparently. |
Diagnostic: Check Current Pinning Rate
If RDS Proxy is already deployed, check pinning via CloudWatch:
ClientConnectionsSetupSucceeded vs DatabaseConnectionsCurrentlySessionPinned
- Pinning rate = pinned / total × 100
- If > 30%, proxy benefit is significantly reduced
Mitigation Strategies
- Move prepared statements to client-side (use
useServerPrepStmts=false in JDBC)
- Avoid SET SESSION — use proxy's default connection init query instead
- Keep transactions short to minimize pin duration
- Avoid temporary tables — use CTEs or subqueries instead
- Replace GET_LOCK() with application-level locking (Redis, DynamoDB)