1.数据库 死锁问题及相关解决建议
当执行100用户并发审批二种票场景时,Loadrunner 提 示100个审批事务全部成功通过,而通过应用查询,实际提交数目却为60个。Loadrunner出现“误判”是由于HTTP协议的本身的限制,由于 HTTP协议的无状态特点,Loadrunner只能通过HTTP协议返回码来判断脚本是否执行成功,而不是在业务层次上做判断。
经排查,发现在并发负载下,提交审批二种票时,失败的页面上出现了如下错误信息:
信息:执行查询SQL 语 句时发生错误:[IBM][CLI Driver][DB2/AIX64] SQL0911N The current transaction has been rolled back because of a deadlock or timeout. Reason code "68". SQLSTATE=40001
[IBM][CLI Driver][DB2/AIX64] SQL0911N The current transaction has been rolled back because of a deadlock or timeout. Reason code "68". SQLSTATE=40001
从DB2的监控数据来看,在并发数目超过30后,lock time大大增加,超过10秒,最终导致死锁超时。
问题可能根源在:
(1)开发人员在提交sql语句,做update,insert等操作时,启用了排它锁,导致死锁。
(2)数据库的locktimeout参数设置过小。
在针对locktimeout参数做过优化调试后,成功提交数有所提升,但仍无法从根本上消除死锁问题的发生。因此,建议在应用程序jdbc层上修改代码,避免死锁发生,才是解决问题根本之道。
具体解决建议:
建议开发人员检查jdbc层上可能存在死锁语句,这有可能:
● 一次commit包含多条sql语句
● 涉及同时多表操作的sql语句
● 逻辑死锁
2.数据库表索引设计相关问题及解决建议
数据库在设计上存在如下两个问题:
(1)表设计存在大表风险
在测试 过程中,发现工单和两票在做删除操作时,记录只是改变状态字段,而始终分别保存在USERID.T_GDMX_GD,USERID.T_LP_GZP,USERID.T_LP_ CZP表中。
这可能会导致在生产环境下,随着运行时间和用户数的增加,如上表数据记录越来越多,最终成为大表,引起查询性能的下降。一般,业界通常的解决类似问题的办法是另建备份表保存被删除的记录。
(2)索引构建不合理,没有起到相应的作用。
在运行两票性能测试场景过程中,通过loadrunner的db2 performance counter监控捕获pool_index_read指标,发现此指标的值一直为0。因此,我们推断当前数据库中存在着索引构建不合理的问题。
已经查证,两票的工单存放于一张数据库表中,此表有80多个字段,而索引仅为7个。
另外,通过变电一种票的性能测试结果可以看到total_sort_time总共花费986秒,排序时间过长,说明数据库的索引没有建在order by的字段上。
具体解决建议:
与开发人员进行沟通,构建合理的表及索引。
3.硬件可能瓶颈
在负载测试过程中,曾发生过数据库服务器cpu 100%运行,memory居高不下,最终数据库服务宕掉。经检测,在操作系统中有过虚拟内存分配高达9GB,导致机子负荷过重。
具体解决建议:
鉴于此,我们建议实际生产环境上的数据库服务器内存至少16GB或更高。
相关推荐
《InnoDB数据库死锁问题详解及解决策略》 在MySQL数据库中,InnoDB存储引擎以其事务安全性和行级锁定机制而备受青睐。然而,这种高级别的并发控制也带来了一种可能的问题——数据库死锁。本文将深入探讨InnoDB在...
通过以上分析和建议,我们可以有效地检测、解决并预防ORACLE表的死锁问题,从而提高数据库系统的稳定性和性能。在实际操作中,这些方法已经被证明是亲测有效的,能够显著提升数据库管理的效率和效果。
死锁会严重阻碍数据库的正常运行,因此了解如何识别和解决DB2中的死锁问题至关重要。 #### 二、死锁检测与分析工具 **1. 获取锁快照命令:** - **命令格式:** `db2=>get snapshot for locks on <database_name>` ...
SQL2000 数据库优化及安全建议 本文档提供了 SQL2000 数据库优化及安全建议,以帮助数据库管理员和开发者提高数据库性能和安全性。 数据库优化 数据库优化是数据库管理员和开发者需要关注的重要步骤。数据库优化...
在本文中,我们将详细介绍Purge死锁问题的原因和解决方法,并提供一些有用的建议和实践经验,以便大家更好地理解和解决Purge死锁问题。 一、Purge死锁问题的原因 Purge死锁问题的原因有多种,包括记录锁、gap锁、...
数据库开发、维护、性能调优、备份还原以及解决复杂问题,是IT行业中数据库管理的核心环节。在SQL Server和DATABASE环境下,这些任务尤为重要。 首先,我们从数据库开发谈起。数据库开发涉及设计、创建和管理数据库...
- **查阅官方文档**:IBM提供了详细的错误代码文档,包括SQLCODE的含义和解决建议,是解决问题的第一步。 - **分析SQLSTATE**:SQLSTATE是另一个与SQLCODE相关的五位字符代码,提供了更具体的错误信息,配合...
例如,对于锁冲突、死锁等问题,工具能够提供相应的解决方案,帮助用户快速定位和解决问题。 6. 任务调度:用户可以设置定时任务,如定期备份、清理日志等,自动化执行日常维护工作,减轻管理员的工作负担。 7. ...
总的来说,"数据库挂起工具"是解决SQL Server 2000数据库挂起问题的重要辅助手段,通过其提供的分析和解决建议,可以有效地减少因数据库挂起造成的业务中断,确保系统的稳定运行。在处理此类问题时,理解挂起背后的...
7. 数据库恢复与并发控制:事务的概念,ACID属性,死锁问题以及解决策略。 8. 数据库性能优化:索引的使用,查询优化,以及数据库的性能监控和调优。 试卷答案部分则可能提供了解答这些问题的参考,帮助学习者检验...
但是,如果在备份过程中遇到突发状况,例如长时间未进行系统维护而导致的数据库死锁,就可能导致备份中断。此时,若直接重启数据库服务,可能会引起更严重的问题。 **具体情形:** 笔者所在医院在一次高峰时段,发现...
因此,建议考生不仅要熟记理论,还要通过大量的练习来提高对SQL查询和问题解决的能力。同时,由于不同教师可能侧重点不同,复习时要兼顾多个来源,结合课件和复习材料,形成全面的知识体系。 总的来说,哈工大的...
理解死锁的原理以及如何预防和解决死锁问题对于保持数据库系统的稳定运行至关重要。 ### 死锁的概念和产生原因 在MySQL中,死锁通常是由于多个事务对资源的加锁顺序不一致导致的。当事务A持有资源R1,并等待事务B...
这部分可能会讲解ACID属性、锁机制和死锁问题的解决策略。 Course Project.ppt则可能是课程项目或者案例研究的介绍,让学生将所学应用于实际场景,设计并实现一个小型的数据库系统,从而更好地理解和掌握数据库原理...
- **例行工作建议**:制定并遵循定期检查计划,使用自动化工具监控,实施问题追踪和解决流程。 - **相关填表说明**:记录维护活动,包括执行的时间、结果和采取的措施,便于审计和改进。 通过遵循这个手册,...
在复习过程中,建议考生先系统学习数据库理论,然后通过做题来巩固知识,遇到不懂的问题要及时查阅资料或请教专业人士。此外,实战经验也很重要,可以尝试设计小型数据库项目,模拟实际操作,提升问题解决能力。在...
并发控制处理多个事务同时操作数据库时可能出现的问题,如死锁和活锁,常见的并发控制机制有锁定、时间戳排序和多版本并发控制(MVCC)。 7. **恢复与备份**:数据库恢复确保在系统故障后能够恢复到一致状态。日志...
《数据库系统概念(原书第七版)》是数据库领域经典的教材之一,由Seymour Abrahams、Edward F....但要注意,仅依赖答案而不亲自尝试解决问题可能限制了学习效果,因此建议结合教材和习题进行深入学习和实践。
7. **并发控制**:事务、ACID属性(原子性、一致性、隔离性和持久性)、并发问题(死锁、活锁)及解决策略。 8. **数据库恢复**:事务日志、备份与恢复策略,如简单恢复、完全恢复和前滚/后滚恢复。 9. **数据库...
5. 数据库事务与并发控制:理解事务的概念,其ACID(原子性、一致性、隔离性和持久性)属性,以及并发操作可能导致的问题和解决策略,如死锁和锁机制。 6. 数据库恢复与备份:学习如何在系统故障或灾难情况下恢复...