Beekeeper Studio 手动事务的超时与自动回滚参数怎么配置?
【免费下载链接】beekeeper-studioModern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.项目地址: https://gitcode.com/GitHub_Trending/be/beekeeper-studio
如果你在 Beekeeper Studio 的 SQL Editor 中开启了手动提交(Manual Commit)模式,长时间不操作的事务会被自动回滚,回滚前还会收到一次警告。要调整“多久回滚”和“提前多久提醒”,需要修改 INI 配置文件中的manualTransactionTimeout和autoRollbackWarningWindow两个参数,而不是在界面上找开关——文档明确说明这两个默认值只能通过 config file 修改。
先理解手动事务的超时机制
根据 Manual Transaction Management 文档,手动模式下:
- 进入该模式后,每条查询都处于事务中,必须
Commit或Rollback变更才会写入数据库; - 事务开始后,Beekeeper 会为当前标签页预留一条连接(从数据库连接池分配),以保证上下文不丢失,此时编辑器左下角出现
Commit和Rollback按钮; - 作为预防措施,每个事务都有超时限制:默认 10 分钟无活动即触发自动回滚,回滚前有 1 分钟的警告期。也就是说默认情况下,事务开启约 9 分钟后你会收到通知,提示你要么结束事务、要么让它再保留 10 分钟。
这套功能当前仅支持 Postgres、CockroachDB、Redshift、MySQL、MariaDB、SQLServer、Firebird 和 Oracle,其余数据库类型不适用。
三个可配置参数及其含义
configuration.md 与手动事务文档给出的配置项如下(来自文档示例):
[db.default] ; Max number of manual transactions to allow at a time ; This should be kept below the max pool size for the database, as these connections ; are pulled from that pool maxReservedConnections = 2 ; Allow two active transactions at a time ; How long to keep a transaction open without any activity before automatically rolling it back in manual commit mode manualTransactionTimeout = 600000 ; 10 Minutes ; The amount of time before an automatic rollback to warn the user that it is about to happen autoRollbackWarningWindow = 60000 ; 1 Minute [db.postgres] maxReservedConnections = 4 ; Allow 4 active transactions at a time (only for postgres)manualTransactionTimeout:手动提交模式下,事务无活动状态下允许保持打开的时长(毫秒),超过后自动回滚。默认值600000(10 分钟)。autoRollbackWarningWindow:距离自动回滚还有多久时开始向用户发出警告(毫秒)。默认值60000(1 分钟)。maxReservedConnections:同时允许多少个手动事务。文档特别提醒该值应低于数据库的最大连接池大小,因为这些预留连接就是从池中取出的。
配置写在[db.default]段时对所有数据库类型生效;也可以写在具体的数据库段(如[db.postgres])只为该类型设置。INI 语法要求段名用[方括号]、=两边留空格。
在哪里修改配置
Beekeeper Studio 使用 INI 三层配置:Default(随应用发布的基线值)→ User(个人定制)→ Administrator(机器级,管理员控制),加载顺序决定覆盖关系:Admin 覆盖 User,User 覆盖 Default。修改超时参数应写入 User 或 Administrator 配置文件。
各平台配置文件位置(config_file_directories.md):
| 平台 | User 配置 | Admin 配置 |
|---|---|---|
| MacOS | ~/Library/Application Support/beekeeper-studio/user.config.ini | /Library/Application Support/beekeeper-studio/system.config.ini |
| Linux | ~/.config/beekeeper-studio/user.config.ini | /etc/beekeeper-studio/system.config.ini |
| Windows | %APPDATA%\beekeeper-studio\user.config.ini | C:\ProgramData\beekeeper-studio\system.config.ini |
以 Linux 为例,把上文示例中需要的参数追加到~/.config/beekeeper-studio/user.config.ini(文件不存在就新建):
[db.default] manualTransactionTimeout = 1200000 ; 20 Minutes autoRollbackWarningWindow = 60000 ; 1 Minute改完后保存文件,完全重启 Beekeeper Studio,新设置才会生效——这是配置系统的要求,只关窗口不够。
验证配置是否生效
文档没有提供独立的健康检查命令,验证方式就是观察手动事务的运行时行为:
- 在 SQL Editor 左下角切到手动提交模式,点击
Begin开始一个事务(或直接执行查询,Beekeeper 会自动为查询加上 begin 语句); - 让事务保持无活动状态,等待到你配置的
manualTransactionTimeout - autoRollbackWarningWindow附近:此时应弹出通知,提示你结束事务或让它继续保留; - 若在警告窗口结束前仍未处理,事务会被自动回滚——此时编辑器上的事务状态即被清除。
如果修改后行为没有变化,configuration.md 列出的排查项是:文件是否放在了操作系统对应的正确目录、INI 语法是否正确(段头、=两侧空格)、是否做了完整重启、段名或键名有无拼写错误、文件权限是否可读,以及开启 debug logging 查看配置加载细节。
相关限制
- 手动事务超时机制只在上述 8 种数据库上可用,配置对其他数据库类型没有效果;
maxReservedConnections的预留连接来自数据库连接池,调高它会占用池内更多连接,文档建议保持低于最大池大小;- 三层配置意味着即使你改了 User 配置,机器级的 Admin 配置仍会覆盖它,团队环境下需要确认管理员配置里没有同名参数。
【免费下载链接】beekeeper-studioModern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.项目地址: https://gitcode.com/GitHub_Trending/be/beekeeper-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考