首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > 高性能WEB开发 >

一道面试题,该如何解决

2013-11-11 
一道面试题mysql 5.6现有如下场景: 某一时间内,指定的表会被多个线程操作,每个线程都会更新表中的一部分数

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

引用:
 某一时间内,指定的表会被多个线程操作,每个线程都会更新表中的一部分数据。更新哪一部分数据,由用户的选择决定。就线程安全或数据库的角度,可能会出现什么问题。


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

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

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


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

热点排行