1.问题:
并发操作会带来哪些数据不一致性(D )。
A 丢失修改、不可重复读、脏读、死锁
B 不可重复读、脏读、死锁
C 丢失修改、脏读、死锁
D 丢失修改、不可重复读、脏读
并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏“数据。
(l)丢失修改(lostupdate)两个事务Tl和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl提交的结果,导致Tl的修改被丢失。
(2)不可重复读(Non一RepeatableRead)不可重复读是指事务Tl读取数据后,事务几执行更新操作,使Tl无法再现前一次读取结果。
(3)读“脏”数据(DirtyRead)读“脏’数据是指事务Tl修改某一数据,并将其写回磁盘,事务T2读取同一数据后,Tl由于某种原因被撤销,这时Tl已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
2.简述TCP三次握手和四次挥手的过程
三次握手:为TCP建立连接的过程
第一次握手:客户端向服务端发送同步序列号SYN,请求建立连接,这时客户端的状态为SYN_SENT,假设此处SYN为x。
第二次握手:服务端接收到客户端的SYN请求,要做的是确认客户端发送过来的SYN,发送确认包ACK,这里的ACK为x+1,意思是说“我收到了你发送的SYN了”。同时,服务器也会向客户端发送一个SYN包,我们设SYN为y。这时服务器的状态为SYN_RECV。一句话,服务器端发送SYN和ACK两个包。
第三次握手:客户端收到服务端的ACK数据包和SYN数据包,需要向服务端发送确认数据包ACK,此处ACK为y+1,发送完毕后,客户端和服务器的状态为ESTABLISH,即TCP连接成功。
四次挥手:为TCP断开连接的过程,可以客户端向服务端,也可服务端向客户端,此处用A端对B端描述
第一次挥手:A发送同步序列号FIN给B端,意思是我的任务完成了,请求断开连接
第二次挥手:B收到A发送的FIN,但是此时B可能有数据没有传输结束,所以先发送确认数据包ACK给A,不会马上发送FIN给A
第三次挥手:当B数据传输结束,发送FIN序列号给A,意思是我现在传输结束,可以断开连接了
第四次挥手:A收到B发送的FIN序列号之后,发送确认数据包ACK给B,等待2MSL断开连接