mysql 5.6
现有如下场景:
某一时间内,指定的表会被多个线程操作,每个线程都会更新表中的一部分数据。更新哪一部分数据,由用户的选择决定。就线程安全或数据库的角度,可能会出现什么问题。
当时回答这个问题之前,聊到了尽量少的锁表,可以提高性能。
------解决方案--------------------
这样回答估计没戏了吧
------解决方案--------------------
更新前,把所有不更新的数据,作为where条件,放到更新的语句里面,这样应该避免并发。做的事网站开发,线程这块接触的少
------解决方案--------------------
个人觉得,这类开放式命题,如果能设法跟面试人交流起来会比直接自己说一堆更合适些。
另外,听你的说法,显得你只是知道大概性理论;既然是更新就一定会锁表,所谓尽量少锁表就太空虚了。
还有,他问的问题是可能会出现什么问题,那么你至少要设法举点例子出来,设想出能出现问题的场景。
比如:
◎ 假定两个线程同时取出表中某行记录,进行计算后再更新进去;然后要怎么避免。
◎ 假定线程A取出记录X(ForUpdate)然后准备更新记录Y,而线程B则取出记录Y(ForUpdate)然后准备更新X;然后要怎么避免。
面试官估计是想看看你能举出多少例子,以及你沟通分析的逻辑请,来看看你能力情况。