防止程序会话泄漏
当程序失去连接,但其会话在数据库实例中仍然处于活动状态时,就会发生会话泄漏。 泄漏的会话以编程方式丢失到应用程序中。
优化设计的应用程序可以防止会话泄漏。 通常,会话泄漏是由于应用程序捕获的异常而发生的。 如果应用程序不能正确处理异常,则它可能在不执行提交或回滚的情况下终止连接,从而泄漏会话。
会话泄漏可能会导致严重的数据库性能和数据完整性问题。典型的问题有以下几种形式:
连接池排空
锁泄漏
逻辑混乱
连接池排空
设计缺陷会导致连接池排空。
例如,假设应用程序设计缺陷导致它一致地泄漏会话。即使泄漏率很低,动态连接池也会导致越来越多的会话在编程上变得无法使用。
其效果是减少可用的连接池,并导致剩余的连接无法跟上工作负载。不可用会话的数量不断的攀升,直到池中没有可用的连接。
锁泄漏
锁泄漏通常是会话泄漏的副作用。
例如,正在进行批处理更新的泄漏会话可能持有表中多行的锁。如果泄漏的会话持有锁,那么希望获取锁的会话将在泄漏的会话后面形成一个队列。
持有该锁的程序正在等待来自客户端的交互以释放该锁,但由于连接以编程方式丢失了,消息将不会被发送。 因此,数据库无法提交或回滚会话中任何活动的事务。
逻辑混乱
泄漏的会话可能包含对数据库未提交的更改。例如,当数据库连接意
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!