首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Interbase事务监控

Interbase事务监控
EN

Stack Overflow用户
提问于 2013-02-20 00:53:15
回答 2查看 1.7K关注 0票数 3

我在Interbase 7.5中遇到了一个非常奇怪的问题,它似乎被卡住了。

我可以使用IBConsole ->来跟踪问题右键单击DB -> Performance Monitor -> Transactions

通常,此列表应该只显示几个活动事务。但当我启动我的应用程序(使用Delphi7 Interbase组件的apache web服务器的web模块,例如IBQuery、IBTransaction等)时,我会收到数百个活动事务。

事务类型始终作为快照列出,如果这是相关的。

我已经对所有sql语句进行了三次检查,但找不到任何会产生此类问题的语句……

有没有办法获取特定事务的sql语句?

任何其他如何找到这样的问题的建议都将是非常受欢迎的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-26 23:45:51

有没有办法获取特定事务的sql语句?

可以,您可以从TMP$STATEMENTS WHERE TRANSACTION_ID = ...中选择。这是出于记忆,但应该可以让您开始使用。

在IB性能监视器中,可以使用工具栏上的按钮从[语句]选项卡中找到事务。我不记得你能不能在那个应用里走另一条路了。我已经很久没有写过了!

票数 2
EN

Stack Overflow用户

发布于 2013-02-20 01:07:48

活动的IBX数据集始终需要活动的事务。如果您没有活动数据集,请不要忘记提交所有活动事务。

如果您有活动的数据集,则可以将所有组件配置为使用相同的TIbTransaction对象,还可以通过IdleTimerDefaultAction属性将唯一的TIbTransaction配置为在空闲超时后提交或回滚。

终止事务(通过手动或自动提交或回滚)将关闭所有链接的数据集(TIBQueryTIBTable等)。

您可能会尝试使用CommitRetainingRollbackRetaining方法来终止事务,而不关闭相关的数据集,但这可能会影响服务器的性能,我的建议是始终避免使用它。

如果您想要改进您的应用程序,您应该考虑更改数据库连接层或在IBX上引入具有内存功能的数据集,例如,Delphi的TClientDataSet,它允许您检索数据并将其保留在内存中,同时关闭所有底层数据集(和事务),同时允许您使用传统的插入/追加/编辑/删除方法来修改数据,然后在新的短时间事务中将这些更改应用于数据库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14962997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档