欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

一道面试题,该如何解决

更新时间: 2014-01-05 01:58:03 责任编辑: Author_N1

 

一道面试题
mysql 5.6
现有如下场景:
 某一时间内,指定的表会被多个线程操作,每个线程都会更新表中的一部分数据。更新哪一部分数据,由用户的选择决定。就线程安全或数据库的角度,可能会出现什么问题。
 
当时回答这个问题之前,聊到了尽量少的锁表,可以提高性能。
--参考方法--
这样回答估计没戏了吧
--参考方法--
更新前,把所有不更新的数据,作为where条件,放到更新的语句里面,这样应该避免并发。做的事网站开发,线程这块接触的少
--参考方法--
引用:
 某一时间内,指定的表会被多个线程操作,每个线程都会更新表中的一部分数据。更新哪一部分数据,由用户的选择决定。就线程安全或数据库的角度,可能会出现什么问题。


个人觉得,这类开放式命题,如果能设法跟面试人交流起来会比直接自己说一堆更合适些。

另外,听你的说法,显得你只是知道大概性理论;既然是更新就一定会锁表,所谓尽量少锁表就太空虚了。

还有,他问的问题是可能会出现什么问题,那么你至少要设法举点例子出来,设想出能出现问题的场景。


比如:
◎ 假定两个线程同时取出表中某行记录,进行计算后再更新进去;然后要怎么避免。
◎ 假定线程A取出记录X(ForUpdate)然后准备更新记录Y,而线程B则取出记录Y(ForUpdate)然后准备更新X;然后要怎么避免。
面试官估计是想看看你能举出多少例子,以及你沟通分析的逻辑请,来看看你能力情况。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:58:03
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/3783/
本文WWW.DOC100.NET DOC100.NET版权所有。