0 0

数据提交并发问题0

请教一下,我现在做个项目,在线人数估计1000人左右,同时考试,数据保存在session中,最后提交试卷同步缓存数据到数据库,现在在同一时间点击保存数据会造成数据库锁死(不能确定同时操作的人数,估计不在少数,应该会有几百人左右),部分客户端会出现问题,数据提交不上去,数据库中表数据大概会有10万条数据(1000人*100道题目,每个人对应的考试题目,最后提交实为评分并更新这张表数据,建了索引,将更新表结构的时候参数列作为组合索引),数据库为sqlserve2005,服务器配置为4G内存,客户端为1G内存,想过在提交数据添加个队列,与数据库操作放到事务管理中实现,对于方法添加锁操作,在这种情况下还要该如何优化才能保证1000人能够正常考试并提交试卷?或者说操作上是否有不合理的地方,希望大侠给予指导意见,先谢过!

问题补充:其实提交数据,主要是 从缓存中获取数据(学生答题的时候将答案放入map对象中),根据学生答案和标准答案进行评分,然后我用ibatis的批量更新评完分之后的数据,业务层通过spring的事务管理,是通过tx:advice 进行方法前缀匹配的方式,数据库是sqlserver2005,实际上也不应该会那么卡的啊,并发量大概在500人左右吧,不过同时操作一张表而已。

问题补充:学生的答题信息中,就是有的数据是华表数据,这个是用友的华表控件操作的表格和一些票据什么的,就是会计中经常用的票据之类的,这些数据只能通过华表控件获取 行列+数据 的组合形式,后台需要将 行列+数据  与  标准答案的 行列+数据  进行分割比对,对了给分,不知道是不是这块的数据操作会慢?可是我在后台打印出来时间也很快的啊,哎,不知道这块该怎么弄,没有实际并发和数据库死锁的经验,希望大家能多给点建设性的意见。
2014年6月23日 13:06

6个答案 按时间排序 按投票排序

0 0

从数据量看,应该是代码问题,仔细检查检查对数据库操作这块有没有及时提交事物,及时释放锁。

2014年6月24日 17:13
0 0

应该是事务锁表了。可以考虑批量更新。
你这种答题的数据修改不涉及到“写后读”问题,因为基本操作的都是不同记录。
可以提交到服务器队列,然后由服务器异步更新数据库。只要提交到服务器就算提交成功。

2014年6月24日 16:44
0 0

更新时有可能造成锁表,看下数据库默认锁级别,用CS靠谱些

2014年6月24日 16:37
0 0

看到你的问题,应该你的事务处理不合理导致的锁表,请检查事务块儿是否过大,提交时间过长等。

2014年6月23日 20:02
0 0

感觉题目描述的不清楚啊。

2014年6月23日 17:33
0 0

最后提交实为评分并更新这张表数据

这块是什么意思?

同一时间点击保存数据会造成数据库锁死?

要是这么点就锁死了,那这数据库还能生存下去吗?

最后提交实为评分并更新这张表数据,建了索引,将更新表结构的时候参数列作为组合索引

你这块是 alter  修改表结构吗?  实在是看不懂啊。  要是的话应该是 锁表的吧。


看看别人怎么说 。

2014年6月23日 15:53

相关推荐

    处理多用户更新数据并发问题 编程小实例

    在编程领域,尤其是在开发多用户在线应用时,处理多用户更新数据并发问题是一个至关重要的环节。这涉及到数据库的事务管理、锁机制、并发控制策略等多个方面。本实例以C++.NET为开发环境,通过源代码的方式,展示了...

    处理多用户更新数据并发问题

    在IT行业中,尤其是在数据库系统和分布式系统的设计与开发中,多用户更新数据并发问题是一个重要的挑战。当多个用户同时尝试修改同一数据时,如果没有适当的控制机制,可能会导致数据不一致、丢失更新或死锁等问题。...

    Oracle并发问题处理

    如果数据库设计和应用程序开发中没有妥善处理并发问题,则可能出现数据不一致、脏读等问题,甚至导致系统性能下降。因此,理解并发问题的本质及其处理机制对于维护数据完整性和提高系统稳定性至关重要。 #### 并发...

    多线程并发处理数据的问题

    在IT行业中,多线程并发处理数据是一种常见的优化策略,特别是在大数据处理、网络服务和分布式系统中。通过并发,可以充分利用多核...在实际开发中,需要根据具体场景选择合适的并发策略,同时注意避免潜在的并发问题。

    微博支付-高并发场景下数据一致性问题探究.pdf

    在高并发场景下,微博支付系统面临的主要挑战之一是数据一致性问题。这涉及到多个系统间的交互,包括前端用户界面、支付网关、后端数据库以及各种缓存服务,如MySQL、Redis等。在这个环境中,保证数据的一致性是至关...

    数据提交工具

    数据提交工具是IT行业中一种非常重要的实用程序,它主要用于协助用户高效、安全地上传、管理和交换数据。在当今大数据时代,数据的处理和传输已成为各类企业和个人日常工作中不可或缺的一部分。这些工具提供了各种...

    使用TimeStamp控制并发问题示例

    Timestamp是并发控制的一种策略,主要用于解决更新丢失(Lost Update)等并发问题。本示例将详细介绍如何在数据库中利用Timestamp来防止并发操作导致的数据不一致。 Timestamp的基本原理是为每条记录分配一个时间戳...

    ORACLE EBS 入门与提高 请求组 数据组 自定义并发程序

    - **提交并发请求(CONCSUB)**:这是一个Oracle提供的实用程序,用于提交并发请求。通过CONCSUB,可以轻松地调度和管理并发程序。 总的来说,Oracle EBS中的请求组、数据组和自定义并发程序是非常重要的概念和技术。...

    并发问题详述(sql)

    并发问题在数据库环境中是常见的挑战,特别是在多用户系统中,多个事务可能会同时访问和修改同一份数据,导致数据一致性的问题。以下将详细阐述并发问题及其解决方案。 首先,我们需要理解并发问题的四大类型: 1....

    关于处理informix并发问题的几点心得

    在处理 Informix 并发问题时,核心关注的是如何确保数据一致性并提高系统效率。并发问题通常发生在多个用户或进程同时访问和修改同一数据时,可能导致数据不一致或死锁。在 Informix 数据库管理系统中,有多种策略...

    C#、.Net平台大批量提交数据到数据库

    但要注意,并发提交可能引发锁竞争,导致性能下降,因此需要合理设置线程数量,并结合数据库的事务隔离级别来避免死锁和其他并发问题。C#中的ThreadPool或者Task类可以方便地实现多线程编程。 描述中提到的...

    C#使用队列(Queue)解决简单的并发问题

    在本文中,我们将深入探讨如何使用C#中的队列数据结构(Queue)来解决简单的并发问题。队列是一种线性数据结构,遵循先进先出(FIFO)的原则,即第一个进入的元素也将是第一个离开的元素。这种特性使得队列在处理...

    无限提交数据-软件版

    【描述】中提到的"无限提交数据"是指该软件的核心功能,即不受限制地、重复地进行数据提交操作。这在某些合法场景下,例如测试网站性能或模拟高并发访问时,可能会有应用。然而,当这种能力被用于“恶意提交数据”时...

    多核与并发数据结构-用于列车售票的可线性化并发数据结构.zip

    本资料主要探讨了如何使用可线性化并发数据结构来解决这类问题。 可线性化是一种并发一致性模型,它保证了即使在多线程环境下,对数据结构的操作看起来就像是在某个单一顺序中执行一样,这个顺序被称为线性历史。这...

    DataSet中的数据并发性异常.doc

    如果一个CSR在另一个更新数据后提交更改,那么就会检测到数据并发性问题,因为数据库记录的状态与DataSet中的状态不符。 数据并发性异常的常见原因是: 1. **脏读**:一个事务读取了另一个事务未提交的修改。 2. *...

    并发控制指的是当多个用户同时更新行时,用于保护数据库完整性的各种技术。并发机制不正确可能导致脏读、幻读和不可重复读等此类问题。

    总结来说,并发控制通过封锁、封锁协议、两段锁协议以及特定数据库系统的并发机制来确保在多用户环境中,事务可以安全并高效地执行,避免数据不一致性和资源争用问题。理解并发控制的原理和实践对于优化数据库性能和...

    MySQL Innodb锁解决并发问题

    ### MySQL Innodb锁解决并发问题 ...总结来说,在MySQL Innodb中合理地使用锁机制能够有效地解决并发问题,确保数据的一致性和完整性。通过本例可以看出,选择合适的锁策略对于优化数据库性能至关重要。

    48 多个事务并发更新以及查询数据,为什么会有脏写和脏读的问题?l.pdf

    这些知识点主要涉及数据库事务的隔离级别,事务的ACID属性(原子性、一致性、隔离性、持久性),以及如何通过锁机制和事务日志来避免和解决这些并发问题。 首先,要理解脏写和脏读的概念。在多个事务并发操作的场景...

    java高并发写入用户信息到数据库的几种方法

    在 Java 高并发环境下,写入用户信息到数据库可能会出现一些问题,例如多个用户同时写入导致数据不一致或重复写入。为了解决这些问题,需要使用一些特殊的方法来确保数据的一致性和高并发写入的性能。本文主要介绍了...

Global site tag (gtag.js) - Google Analytics