

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon RDS Data API 進行工作階段管理
<a name="data-api.session-management"></a>

RDS Data API 會維護資料庫連線集區，並在呼叫之間重複使用它們，以減少連線開銷。重複使用連線之前，RDS Data API 會重設工作階段狀態。重設會因資料庫引擎而有所不同：在 PostgreSQL 上，RDS Data API 會執行 `DISCARD ALL`陳述式以清除工作階段狀態，例如暫存資料表、預備陳述式和工作階段層級參數；在 MySQL 上，RDS Data API 會重設連線 （相當於 `COM_RESET_CONNECTION`)。

這些重設涵蓋引擎擁有的工作階段層級屬性，但不保證包含延伸模組建立的狀態。執行這些清除時，延伸項目的行為可能不會與其他工作階段層級屬性相同，而且重設後，其狀態可能會保留在資料庫連線上。由於 RDS Data API 會重複使用連線，延伸模組留下的狀態不限於建立連線的呼叫，而且稍後的呼叫會重複使用相同的連線時，仍然存在。

`dblink` 是此行為的一個範例： `DISCARD ALL` 不會關閉`dblink`延伸模組開啟的連線，因此重複使用`dblink`連線時，在一次呼叫中開啟的具名連線可以保持開啟。其他將資源保留在引擎工作階段狀態之外的延伸項目，其行為可能類似。

如果您搭配 RDS Data API 使用擴充功能，請勿依賴工作階段重設來釋出擴充功能擁有的狀態。使用延伸項目自己的遞減函數，在相同交易中建立和釋放該狀態。對於 `dblink`，請關閉每個與 的連線`dblink_disconnect`。