MySQL是怎样运行的(八) 版本链  对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含DB_TRX_ID和DB_ROLL_PTR这两个隐藏列: DB_TRX_ID:一个事务每次对某条聚簇索引记录进行改动时,都会把该事务的事务ID赋值给DB_TRX_ID隐藏列 DB_ROLL_PTR:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到Undo Log中。这个隐藏列就相当于一个指针,可以通 2021-08-08 MySQL
MySQL是怎样运行的(七) Undo Log的概念介绍可以参考上篇。需要注意一点的是,由于查询操作SELECT并不会修改任何用户记录,所以在执行查询操作时,不需要记录相应的Undo Log。 事务ID分配事务ID的时机 对于只读事务(START TRANSACTION READ ONLY)来说,只有在它第一次对某个用户创建的临时表(CREATE TEMPORARY TABLE)执行增删改操作时,才会为这个事务分配一个事务ID 2021-08-03 MySQL
Embedded Servlet Container 是怎样启动的   传统Java Web开发中,开发者需要独立部署Servlet容器,比如Tomcat,并将应用程序打成war包放入容器才能运行,这多多少少有点繁琐且不方便调试,嵌入式Servlet容器的出现改变了这个局面。当使用嵌入式Servlet容器,我们不再需要任何外部设施的支持,应用程序本身就是一个可以独立运行的个体。作为解放生产力的典型代表,SpringBoot默认采用Embedde 2021-07-27 Spring
MySQL是怎样运行的(六)   Redo Log的概念介绍可以参考上篇。 Redo Log 格式  Redo Log本质上只是记录了事务对数据库进行了哪些修改。根据修改场景的不同,Redo Log相应的也有多种类型,其中绝大部分都有: type: 这条Redo Log的类型 space ID:表空间ID page number:页号 data:这条Redo Log的具体内容 2021-07-20 MySQL
TCP/IP 详解(六)   路由器因无法处理高速率到达的流量而被迫丢弃数据信息的现象称为拥塞。若不采取对策,网络性能将大受影响以致瘫痪。为避免或者在一定程度上缓解这种情况,TCP通信的每一方都会实行拥塞控制机制。所谓拥塞控制,就是在网络中发生拥塞时,减少向网络中发送数据的速率,防止造成恶性循环;同时在网络空闲时,提高发送数据的速率,最大限度地利用网络资源。 2021-07-15 Net
MySQL是怎样运行的(五)   事务存在的意义是为了保证系统中所有的数据都是符合预期的,且相互关联的数据之间不会产生矛盾,即数据状态的一致性(Consistency)。按照数据库的经典理论,要达成这个目标,需要三方面的共同努力: 原子性(Atomicity):在同一项业务处理过程中,事务保证了对多个数据的修改,要么同时成功,要么同时被撤销 隔离性(Isolation):在不同业务处理过程中,事务保证了各 2021-07-10 MySQL
TCP/IP 详解(五) 延时 ACK  在许多情况下,TCP并不对每个到来的数据包都返回ACK,利用TCP的累积ACK字段就能实现该功能。累积确认可以允许TCP延迟一段时间发送ACK,以便将ACK和相同方向上需要传的数据结合发送。这种捎带传输的方法经常用于批量数据传输。显然,TCP不能任意时长的延迟ACK,否则对方会误以为数据丢失而出现不必要的重传。采用延时ACK的方法会减少ACK传输数目,可以一定程 2021-07-07 Net
MySQL是怎样运行的(四)   MySQL的查询优化器在基于成本和规则对一条查询语句进行优化后,会生成一个执行计划。使用EXPLAIN语句可以让我们查看某条语句的执行计划,比如多表连接的顺序是什么,采用什么访问方法来具体查询每个表等。 12# 列 number 上建有索引 idx_noexplain select * from t2 where number = 3 id select_type 2021-07-03 MySQL
MySQL是怎样运行的(三) 条件化简移除不必要的括号  有时候表达式中有许多无用的括号,比如: 1select * from (t1, (t2, t3)) where t1.a = t2.a and t2.b = t3.b 优化器会把语句中不必要的括号移除掉,移除后的效果如下: 1select * from t1, t2, t3 where t1.a = t2.a and t2.b = t3.b 2021-06-29 MySQL
TCP/IP 详解(四)    由于IP可能出现丢包、重复或乱序的情况,为保证数据传输的正确性,TCP重传其认为已丢失的包。TCP根据接收端返回至发送端的一系列确认信息来判断是否出现丢包。当数据段或确认信息丢失,TCP启动重传操作,重传尚未确认的数据。TCP拥有两套独立的机制来完成重传,一是基于时间,二是基于确认信息的构成。 2021-06-27 Net