Oracle 10g 突发 1000 人 update 一个表中的一行, 导至严重延时如何解决呢? Oracle 10g 突发 1000 人 update 一个表中的一行, 导至严重延时如何解决呢? (请说说解决方向) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先还是从应用入手吧。为什么会出现1000个session同时update同一行? 情况是: 1000个用户用同一个名和密码, 同时登录, 修改时间. 例如: 表: username | password | datetime --------------------------------------------- | | --------------------------------------------- 1000个用户同时登陆?这种几率非常的小。除非你在用户登陆修改时间后没有立即commitoracle数据库commit是非常快的,只需要相关的日志写入就commit完成了。修改一条记录的日志是如此的少,如果立即commit,那么时间最多也就是豪秒级。如果你1000个用户能够在毫秒级上实现同时登陆,那不得不佩服你了:) 另外,按照你的表结构,每个用户是一行的,就算真的是1000个用户同时登陆,修改各自的登陆时间,那么也是每个人修改自己的那一行而已。oracle修改数据的时候是在行级加锁的,也就是我改我的,你改你的,没有问题 LZ是说1000个用户用同一个username和password,表里就这一行数据。只是不可能同一时刻有1000个用户来登陆吧?这么巧? 估计是比较大的系统,客户提出的一项压力测试要求。不过我猜想是不是LZ的系统在登录时除了修改时间还有其它很多操作,但这些操作都是用一个事务来控制的?我觉得即使是1000个用户同时并发更新一行记录,更新完立即commit的话,也不会造成不可忍受的的“严重延时”,这种操作,10秒完成都是比较夸张了。 另外,还有一个思路,就是写到缓冲的做法,登录时首选检测该行记录是否被锁定,如果锁定则将登录时间插入到另外一张表A中去,再采用某种策略(定时或定量)检测表A中是否有记录,如果有,则取出表中最大的便当时间与该行的时间进行比较,以确定是否需要更新这一行的时间,更新完结,A中的记录即可删除。这种方法都是下下策了。 hevin 和 NinGoo 分析挺有道理, 不过现在做的这个测试确实有这样的延时出现, 能否再说说有别的具体解决方法和问题解决方向呢? LZ说的应该是 1000人同时使用一个公共账号,来登录系统吧。如果记录日志是update操作,并且没有立即commit的话,可能造成这种情况。建议: 记录日志方式更改为insert ,只是追加记录,或者取消。毕竟公共账号记录一条日志没有什么意义。更改之后应该不会出现这种问题了。 sql语句优化 进行oracle数据库开发用什么语言好? 数据库建模这个技术学好了 有什么用 求助,sql实现分支查询问题 批量Insert语句 什么工具能快速导入 关于oracle 10g 的问题 怎样恢复dmp ORA-12154: TNS:could not resolve service name 急!关于OCI.DLL问题,在线等待中。 请教:存储过程如何与外部的应用程序进行消息的传递?? 哪位大侠能帮我写出具怎么做吗?把HR表空间里的所有表全部导入到其它表空间(CHENXP)..谢了 我想知道怎么配置TimesTen(win),我已经安装好了。
情况是: 1000个用户用同一个名和密码, 同时登录, 修改时间. 例如: 表:
username | password | datetime
---------------------------------------------
| |
---------------------------------------------
建议: 记录日志方式更改为insert ,只是追加记录,或者取消。毕竟公共账号记录一条日志没有什么意义。更改之后应该不会出现这种问题了。