首页 > 编程知识 正文

mysql事务原理,transaction注解

时间:2023-05-06 17:54:33 阅读:171906 作者:1678

TCP三次握手) )。

要建立TCP连接,客户端和服务器必须发送总共三个数据包以确认连接的建立。

TCP握手三次:

初始握手: Client将标志位SYN设置为1,随机生成值seq=J,然后将其包发送到服务器。 客户端将进入SYN_SENT状态,并等待服务器确认。

第二次握手:服务器收到包后,从标志位SYN=1开始知道客户端要建立连接。 Server将标志位SYN和ACK都设置为1,ack=J 1,并随机生成一个值seq=K,然后将该包发送到客户端以确认连接请求,从而使Server进入SYN_RCVD状态

第三次握手: Client收到确认后,检查ack是否为J 1,如果标志位ack正确设置为1,ack=K 1,服务器将该数据包发送到服务器,ack为K 1

TCP挥手(Four-Way Wavehand ) )。

断开TCP连接时,客户端和服务器端需要发送总共四个数据包来确认连接的断开。

TCP挥了四下手:

第一次挥手时:客户端发送FIN以关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态。

第二次挥手:服务器收到FIN后,向客户端发送ACK,确认序列号与接收序列号1(syn相同,一个FIN占用一个序列号,服务器进入CLOSE_WAIT状态

第三次挥手:服务器发送FIN以关闭从服务器到客户端的数据传输,服务器进入LAST_ACK状态。

第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,然后向Server发送ACK,确认序列号为接收号1,Server进入CLOSED状态,完成4次挥手

以下是客户端建立与MySQL数据库的连接并打开事务后,由于MySQL数据库没有成功接收到断开连接而导致长时间未提交事务的情况:

1、APP应用服务器异常宕机

2、APP应用程序异常中止或线程异常终止

3、网络抖动和网卡故障

对于由于上述连接异常断开而导致的未提交事务,可以触发事务回滚:

1、数据库级连接等待超时由MySQL参数wait_timeout控制,缺省时间为8小时。

2、操作系统级TCP连接超时,有以下TCP参数控制:

/proc/sys/net/IP v4/TCP _ keepalive _ time=7200 (等待时间(/proc/sys/net/IP v4/TCP _ keepalive _ intvl=75

3、手动或自动进行基尔连接

参考:

1、https://blog.csdn.net/sssnmnmjmf/article/details/68486261

2、赞扬DBA在DTCC2019上的技术共享

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。