数据库表死锁的问题

peng2739956 2018-06-08 05:16:21
现如今有个比较严重的问题,比如说A表正在被游戏程序在无休止的调用中,他们是队列在一个个调用,互不影响。
然后,网站管理员登陆了网站后台对这个表的某条字段进行了更改,然后就一挂起了,之后这表就被死锁了,从而导致游戏那把挂了,我网站后台也挂了。

当他在后台对这个表进行UPDATE 等操作的时候,我这边能否知道这个表正在被频繁调用,然后可以提示管理员稍后进行操作。
从而可以避免这个表调用的高峰期
...全文
1135 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q315054403 2018-06-11
  • 打赏
  • 举报
回复
肯定不是DBA问的问题,估计数据量、并发也不大,不需要这个角色。觉得数据库嘛,也就是Select/insert/update/delete而已
OwenZeng_DBA 2018-06-11
  • 打赏
  • 举报
回复
引用 5 楼 peng2739956 的回复:
[quote=引用 4 楼 sinat_28984567 的回复:] 更改处理数据的时候都加上事务,独占这个表数据,其他修改等待释放之后在处理
只有一个update语句就弄事务吗? 这有点夸张了啊 [/quote] 从人方面来管控吧。这个管理员是网管吗,就直接给他约定好,不要在游戏的高峰去操作这些表。 另外在操作这些表之前可以先通过脚本,观察数据库中的运行状态,了解这个表的访问是否频繁。
文盲老顾 2018-06-10
  • 打赏
  • 举报
回复
我前两天刚遇到个类似的问题,表a结构如下 id bigint primary key identity,url varchar(500) not null,taskid varchar(50),stateCode int not null,isOnline bit,其他字段 当时是做了这么个表,对url进行无限制插入,当然,url是唯一不重复的 然后进入到程序,根据url得到一些数据后,更新taskid、isOnline等字段 结果因为并发和锁表,造成了拥塞现象,于是,表结构我调整了,新的结构如下 表A:url varchar(500) primary key,其他不需要更新的字段 表B:url varchar(500) primary key,taskid varchar(50),stateCode int not null,isOnline bit 之前正常插入的数据还是进表A,但是把需要update的字段放到表B里,然后不进行update,直接在表B插入需要update的数据 读的时候将两表关联就能获取正常数据,这样的好处是减少单一表锁表风险,仅供参考
peng2739956 2018-06-08
  • 打赏
  • 举报
回复
引用 4 楼 sinat_28984567 的回复:
更改处理数据的时候都加上事务,独占这个表数据,其他修改等待释放之后在处理
只有一个update语句就弄事务吗? 这有点夸张了啊
二月十六 2018-06-08
  • 打赏
  • 举报
回复
更改处理数据的时候都加上事务,独占这个表数据,其他修改等待释放之后在处理
peng2739956 2018-06-08
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
不要过于关注字段, 先关注你这个网管操作时修改的行数。 如果只是修改几行, 而且是根据主键, 死锁的可能性比较小。 把网管修改的SQL 贴出来再说吧
这个网站后台就是我写的,这个UPDATE 也是根据数据表的唯一主键进行更改, 而且是单条单条进行更改。
吉普赛的歌 2018-06-08
  • 打赏
  • 举报
回复
不要过于关注字段, 先关注你这个网管操作时修改的行数。 如果只是修改几行, 而且是根据主键, 死锁的可能性比较小。 把网管修改的SQL 贴出来再说吧
peng2739956 2018-06-08
  • 打赏
  • 举报
回复
我如今在这个表的UPDATE 前面加了 SET LOCK_TIMEOUT 1800; ,但是貌似并没有用

22,209

社区成员

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

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