服务器会话
Overview
MongoDB's server sessions, or logical sessions, are the underlying framework used by client sessions to support 因果一致性(Causal Consistency) and retryable writes.
重要
Applications use client sessions to interface with server sessions.
Server sessions are available for replica sets and sharded clusters only.
命令选项
Starting in 3.6, MongoDB drivers associate all operations with a server session, with the exception of unacknowledged writes. The following options are available for all commands to support association with a server session:
重要
mongosh
and the drivers assign these options
to the commands in the session.
选项 | 类型 | 说明 |
---|---|---|
| 文档 | The document that specifies the unique ID of the session
associated with the command. If the |
| 64 位整型 | A strictly increasing non-negative number that uniquely identifies the command in the command's session. If specified, the command must also include the |
For the delete
, insert
, and update
commands that take an array of statements, the following option is also
available:
重要
Do not manually set stmtIds
. MongoDB sets the stmtIds
to be strictly increasing non-negative numbers.
选项 | 类型 | 说明 |
---|---|---|
| Array of 32-bit integers | Array of numbers that uniquely identify their respective write operations within the write command. |
会话命令
The following commands can be used to list, manage, and kill server sessions throughout MongoDB clusters:
命令 | 描述 |
---|---|
Expires specified server sessions. | |
Kills all server sessions. | |
Kills all server sessions that match the specified pattern. | |
Kills specified server sessions. | |
Refreshes idle server sessions. | |
Starts a new server session. |
Sessions and Access Control
If the deployment enforces authentication/authorization, the user must be authenticated to start a session, and only that user can use the session.
要对 $external
身份验证用户(Kerberos、LDAP 或 X.509 用户)使用客户端会话和因果一致性保证,用户名不能大于 10k 字节。
If the deployment does not enforce authentication/authorization, a created session has no owner and can be used by any user on any connection. If a user authenticates and creates a session for a deployment that does not enforce authentication/authorization, that user owns the session. However, any user on any connection may use the session.
If the deployment transitions to authentication without any downtime, any sessions without an owner cannot be used.
另请参阅: