一个关于同时访问sql数据的问题!

flyflyfly_woo 2003-12-21 04:41:48
自己编了一个在局域网使用的考试系统,用的是vb+sql,以前使用都没有出问题,最近加了一种试题类型,案例分析,"试题内容"字段用的是ntext,字数多的将近1000字,网内50台计算机同时考试,前面的判断,单选,多选都没有问题,就是做到案例题,试题显示非常慢,有时候点击下一题,一分多钟都没反应,系统无法进行任何操作,有的能继续考试,有的就出延时错误!直接退出了!

各位帮忙看看,是不是由于同时访问的数据量太大了造成了数据堵塞,或者是由于病毒什么原因的,请指教!
...全文
31 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyflyfly_woo 2004-01-28
  • 打赏
  • 举报
回复
还请大家想想什么好办法?
leeboyan 2004-01-12
  • 打赏
  • 举报
回复
帮你顶一下!
zhaoloudy 2004-01-12
  • 打赏
  • 举报
回复
VB可做不了多线程哟!
CSharpSky 2004-01-12
  • 打赏
  • 举报
回复
从性能上说,与类型肯定有关,
ntext 与varchar比较,ntext肯定慢很多,表的数据量越大,差别就越明显;

如果没有其它办法,就用个多线程在后台自动下载吧
poormsteven 2004-01-12
  • 打赏
  • 举报
回复
1.在连接上想点办法,不要用odbc,用SQLDATA数据库引擎,在读写记录时不要用悲观锁,用锁定层次到编辑字段的锁,将connection.commandtimeout置为0,不让连接超时,不要同时打开过多的连接,尽量保持数量较少的连接。不用的连接要关闭,否则数据库的性能会成几何级数下降,查询数据原则把执行尽量留给服务器,不要在客户端执行,如果可以,使用存储过程或者command,不要使用recordset.
flyflyfly_woo 2004-01-11
  • 打赏
  • 举报
回复
没有办法先改成了访问本地数据库对付下。

请大家继续帮忙想想办法,谢谢!
Jianli2004 2004-01-11
  • 打赏
  • 举报
回复
楼上的有理,与类型无关
softmng 2004-01-11
  • 打赏
  • 举报
回复
问题是这样的:
你是不是在进行数据编辑处理的时候客户端程序一直保持着数据库的连接?
sql server 在进行数据操作的时候(比如编辑数据),dbms首先会对所要操作的表加锁,在这种情况下,其他进行同样事务处理的作业就会被阻塞,直到你当前事务提交或会滚,
因此,在做选择题、填空题时由于并发访问时对数据库表加锁的时间比较短(几乎感觉不出来),而进行文本处理时(像你说的对ntext),加锁的时间较常,就会出现阻塞的现象。处理这种问题要注意以下2个问提:
1:从数据库读取到数据后立即断开数据库的连接。然后再进行数据的处理,不要一直保持对数据库的连接。
2:事务处理完毕后要立即执行commit tran 或者 rollback tran 。
WhoseSoft 2003-12-25
  • 打赏
  • 举报
回复

你运行SQL自带的工具 “SQL事件探查器” 分析一下,也许会看出一点问题来!

flyflyfly_woo 2003-12-25
  • 打赏
  • 举报
回复
谢谢大家的回答,我正在重新测试

还想问一下:sql出现延时错误的原因主要是什么?谢谢
zjcxc 2003-12-23
  • 打赏
  • 举报
回复
同意楼上,按楼主的描述,可以用nvarchar类型.

楼主测试一下,改为nvarchar类型,速度怎么样,就知道是否ntext的影响了.
victorycyz 2003-12-23
  • 打赏
  • 举报
回复
楼主,一楼的回复没有什么不对,除了说话的口气。他主要是想说明具体问题要具体分析。

换了任何人来看你的问题描述,只知道你存放1000多字的字段用varchar类型就够用了,还有绝对不是病毒造成的。其他就看不出什么了。因为全然不知道你的程序是怎么写的。

按理说,50台机用于考试,网络处理的速度应该是绰绰有余了。只有可能是你写的程序有问题了。建议:考题在程序打开时就全部传到客户端,当然显示是分页显示的。考生考完后才把答案传回来。
flyflyfly_woo 2003-12-22
  • 打赏
  • 举报
回复
up 请大家多多指教
jingxijun 2003-12-21
  • 打赏
  • 举报
回复
与使用ntext字段应该没什么关系,
可能还是数据库和程序问题。废话?:D
flyflyfly_woo 2003-12-21
  • 打赏
  • 举报
回复
谢谢楼上的回答,

这个程序其实已经用了将近二年了,而且没有出过什么的问题。

我问的目的是想知道,为什么了用了ntext字段就出现这样的问题,而且怎么样才能解决好

我觉得真正的高手,应该不是只会冷嘲热讽
w_rose 2003-12-21
  • 打赏
  • 举报
回复
不知你是怎么编的。

假设你是使用ADO吧!那么对于“案例题”大概应该使用“客户端光标”,“乐观锁”。

或者,应该使用内存来缓存数据。也就是读写服务器数据的时候应该只是临时连接服务器,然后马上读写,马上释放连接。

那些简单入门书上的数据库编程例子,通常只能针对很少用户、小数据量、很高网络带宽的情况下才是有效的。
w_rose 2003-12-21
  • 打赏
  • 举报
回复
要是简单拿一本什么《xxx语言数据库编程》书抄上一段,大概就会出问题。因为那些例子都没有告诉你不同的设计方法会遇上什么样的“地雷”。

你看来只能自己调试和测试源程序了。
w_rose 2003-12-21
  • 打赏
  • 举报
回复
应该是程序问题。程序员新手手太潮。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧