事务命令
本页解释了 SHOW TRANSACTIONS
和 TERMINATE TRANSACTIONS
命令。
SHOW TRANSACTIONS
SHOW TRANSACTIONS
命令用于显示实例中正在运行的事务。这还包括 Fabric 事务。对于远程数据库别名,可以通过连接到远程数据库别名并运行 SHOW TRANSACTIONS
来跟踪事务。
|
此命令返回以下输出
列 | 描述 | 类型 |
---|---|---|
|
事务正在执行操作的数据库的名称。 默认输出 |
|
|
事务 ID。 默认输出 |
|
|
此事务中当前正在执行的查询的 ID,如果当前没有执行查询,则为空 |
|
|
附加到事务的数据库连接的 ID,或嵌入式连接的空 |
|
|
发出事务的连接的客户端地址,如果不可用,则为空 |
|
|
执行事务的用户的用户名。 默认输出 |
|
|
此事务中当前正在执行的查询的查询文本,如果当前没有执行查询,则为空 |
|
|
事务开始的时间。 默认输出 |
|
|
事务的当前状态 ( |
|
|
自事务启动以来经过的时间。 默认输出 |
|
|
此事务的外层事务的 ID,如果存在,否则为空 |
|
|
与事务关联的任何元数据,如果不存在,则为空映射。 |
|
|
包含此事务中当前正在执行的查询使用的所有参数的映射,如果当前没有执行查询,则为空映射。 |
|
|
用于规划此事务中当前正在执行的查询的 Cypher 计划程序的名称,如果当前没有执行查询,则为空 |
|
|
此事务中当前正在执行的查询使用的 Cypher 运行时的名称,如果当前没有执行查询,则为空 |
|
|
此事务中当前正在执行的查询使用的索引,如果当前没有执行查询,则为空列表。 |
|
|
此事务中当前正在执行的查询开始的时间,如果当前没有执行查询,则为空 |
|
|
发出事务的连接使用的协议。这并不一定是互联网协议,例如 http 等,尽管它可能是。它也可能是 "embedded",例如,如果此连接表示嵌入式会话。 |
|
|
发出事务的客户端连接使用的请求 URI,如果 URI 不可用,则为 |
|
|
此事务中当前正在执行的查询的当前状态 ( |
|
|
提供来自底层事务的附加状态详细信息,如果不存在,则为空 |
|
|
有关任何被阻止事务的信息,如果不存在,则为空映射。 |
|
|
事务持有的活动锁的数量。 |
|
|
此事务中当前正在执行的查询持有的活动锁的数量。 |
|
|
积极用于执行事务的 CPU 时间,如果不可用,则为 |
|
|
用于等待获取锁的等待时间。 |
|
|
此事务的空闲时间,如果不可用,则为 |
|
|
自此事务中当前正在执行的查询启动以来经过的时间,如果当前没有执行查询,则为 |
|
|
当前事务中正在执行的查询所花费的 CPU 时间,如果不可用或当前没有查询正在执行,则为 |
|
|
当前事务中正在执行的查询为获取锁而等待的时间,如果当前没有查询正在执行,则为 |
|
|
当前事务中正在执行的查询的空闲时间,如果不可用或当前没有查询正在执行,则为 |
|
|
当前事务中正在执行的查询到目前为止在堆上分配的字节数,如果不可用或当前没有查询正在执行,则为 |
|
|
事务在堆外(本地)内存中分配的字节数,如果不可用,则为 |
|
|
事务在堆上分配的估计已用内存量(以字节为单位),如果不可用,则为 |
|
|
事务执行的页面缓存命中总数。 |
|
|
事务执行的页面缓存错误总数。 |
|
|
当前事务中正在执行的查询执行的页面缓存命中总数。 |
|
|
当前事务中正在执行的查询执行的页面缓存错误总数。 |
|
|
此事务的初始化堆栈跟踪,如果不可用,则为空 |
|
SHOW TRANSACTIONS
命令可以与多个 SHOW TRANSACTIONS
和 TERMINATE TRANSACTIONS
命令结合使用,请参阅 事务命令组合。
语法
有关语法描述的更多详细信息,请参见 此处。 |
- 列出当前服务器上的事务
SHOW TRANSACTION[S] [transaction-id[,...]]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
transaction-id
的格式为 <databaseName>-transaction-<id>
。事务 ID 必须作为以逗号分隔的多个引用的 STRING
值提供,或作为解析为 STRING
或 LIST<STRING>
的表达式提供。
使用 |
具有 SHOW TRANSACTION
权限的用户可以根据权限授予查看当前正在执行的事务。所有用户都可以查看其所有正在执行的事务。
列出所有事务
要使用默认输出列出所有可用事务,请使用 SHOW TRANSACTIONS
命令。如果需要所有输出,请使用 SHOW TRANSACTIONS YIELD *
。
SHOW TRANSACTIONS
database | transactionId | currentQueryId | connectionId | clientAddress | username | currentQuery | startTime | status | elapsedTime |
---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数: 2 |
使用输出筛选列出事务
可以使用 WHERE
子句筛选列出的事务。例如,获取当前正在执行的查询包含 'Mark'
的所有事务的数据库。
SHOW TRANSACTIONS YIELD database, currentQuery WHERE currentQuery contains 'Mark'
database | currentQuery |
---|---|
|
|
|
|
行数: 2 |
某些输出具有 duration
类型,这可能难以阅读。它们可以以更易读的格式返回。
SHOW TRANSACTIONS
YIELD transactionId, elapsedTime, cpuTime, waitTime, idleTime,
currentQueryElapsedTime, currentQueryCpuTime, currentQueryWaitTime, currentQueryIdleTime
RETURN
transactionId AS txId,
elapsedTime.milliseconds AS elapsedTimeMillis,
cpuTime.milliseconds AS cpuTimeMillis,
waitTime.milliseconds AS waitTimeMillis,
idleTime.seconds AS idleTimeSeconds,
currentQueryElapsedTime.milliseconds AS currentQueryElapsedTimeMillis,
currentQueryCpuTime.milliseconds AS currentQueryCpuTimeMillis,
currentQueryWaitTime.microseconds AS currentQueryWaitTimeMicros,
currentQueryIdleTime.seconds AS currentQueryIdleTimeSeconds
txId | elapsedTimeMillis | cpuTimeMillis | waitTimeMillis | idleTimeSeconds | currentQueryElapsedTimeMillis | currentQueryCpuTimeMillis | currentQueryWaitTimeMicros | currentQueryIdleTimeSeconds |
---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数: 3 |
列出特定事务
可以通过事务 ID 指定要返回列表中的哪些事务。
SHOW TRANSACTIONS "neo4j-transaction-3"
database | transactionId | currentQueryId | connectionId | clientAddress | username | currentQuery | startTime | status | elapsedTime |
---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
行数: 1 |
TERMINATE TRANSACTIONS
TERMINATE TRANSACTIONS
命令用于通过其 ID 终止正在运行的事务。
|
此命令返回以下输出
列 | 描述 | 类型 |
---|---|---|
|
事务 ID。 |
|
|
执行事务的用户用户名。 |
|
|
应用于此事务的 |
|
TERMINATE TRANSACTIONS
命令可以与多个 SHOW TRANSACTIONS
和 TERMINATE TRANSACTIONS
命令结合使用,请参阅 事务命令组合。
语法
有关语法描述的更多详细信息,请参见 此处。 |
- 通过当前服务器上的 ID 终止事务
TERMINATE TRANSACTION[S] transaction_id[, ...]
[YIELD { * \| field[, ...] }
[ORDER BY field[, ...]]
[SKIP n]
[LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
]
transaction-id
的格式为 <databaseName>-transaction-<id>
。事务 ID 必须作为以逗号分隔的多个引用的 STRING
值提供,或作为解析为 STRING
或 LIST<STRING>
的表达式提供。
使用 |
具有 TERMINATE TRANSACTION
权限的用户可以根据权限授予终止事务。所有用户都可以终止其所有正在执行的事务。
终止事务
要结束正在运行的事务,而无需等待它们自行完成,请使用 TERMINATE TRANSACTIONS
命令。
TERMINATE TRANSACTIONS "neo4j-transaction-1","neo4j-transaction-2"
transactionId | username | message |
---|---|---|
|
|
|
|
|
|
行数: 2 |
使用输出筛选终止事务
可以使用 YIELD
和 WHERE
子句筛选 TERMINATE TRANSACTIONS
命令的输出。
例如,返回未终止的事务的事务 ID 和消息。
TERMINATE TRANSACTIONS "neo4j-transaction-1","neo4j-transaction-2"
YIELD transactionId, message
WHERE message <> "Transaction terminated."
transactionId | message |
---|---|
|
|
行数: 1 |
与 SHOW TRANSACTIONS
不同;TERMINATE TRANSACTIONS
不允许在没有 YIELD
的情况下使用 WHERE
。
TERMINATE TRANSACTIONS "neo4j-transaction-1","neo4j-transaction-2"
WHERE message <> "Transaction terminated."
`WHERE` is not allowed by itself, please use `TERMINATE TRANSACTION ... YIELD ... WHERE ...`
组合事务命令
与其他 show 命令不同,SHOW
和 TERMINATE TRANSACTIONS
命令可以在同一个查询中组合。
组合多个命令时, |
目前,不允许将其他 cypher 子句与事务命令组合使用。 |
终止给定用户的所有事务
要终止用户的所有事务,请先使用 SHOW TRANSACTIONS
查找事务,然后将它们传递给 TERMINATE TRANSACTIONS
。
SHOW TRANSACTIONS
YIELD transactionId AS txId, username AS user
WHERE user = "Alice"
TERMINATE TRANSACTIONS txId
YIELD message
RETURN txId, message
txId | message |
---|---|
|
|
|
|
行数: 2 |
终止饥饿事务
要终止等待时间超过 30
分钟的事务,请先使用 SHOW TRANSACTIONS
查找事务,然后将它们传递给 TERMINATE TRANSACTIONS
。
以下示例显示了一个等待了 40
分钟的事务。
SHOW TRANSACTIONS
YIELD transactionId, waitTime
WHERE waitTime > duration({minutes: 30})
TERMINATE TRANSACTIONS transactionId
YIELD username, message
RETURN *
transactionId | waitTime | username | message |
---|---|---|---|
|
|
|
|
行数: 1 |
列出已终止的同一用户的所有其他事务
要列出已终止事务的用户的剩余事务,请先使用 TERMINATE TRANSACTIONS
终止事务,然后通过 SHOW TRANSACTIONS
筛选用户。
TERMINATE TRANSACTION 'neo4j-transaction-1', 'neo4j-transaction-2'
YIELD username AS terminatedUser
SHOW TRANSACTIONS
YIELD username AS showUser, transactionId AS txId, database, currentQuery, status
WHERE showUser = terminatedUser AND NOT status STARTS WITH 'Terminated'
RETURN txId, showUser AS user, database, currentQuery
txId | user | database | currentQuery |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
行数: 2 |
列出与给定事务相同的用户的其他事务
要列出与给定事务相同的用户的其他事务,请先使用 SHOW TRANSACTIONS
查找事务,然后通过第二个 SHOW TRANSACTIONS
筛选用户。
SHOW TRANSACTION 'neo4j-transaction-1'
YIELD username AS originalUser, transactionId AS originalTxId
SHOW TRANSACTIONS
YIELD username AS newUser, transactionId AS txId, database, currentQuery, status
WHERE newUser = originalUser AND NOT txId = originalTxId
RETURN txId, newUser AS user, database, currentQuery, status
txId | user | database | currentQuery | status |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
行数: 2 |