- 博客(16)
- 收藏
- 关注
原创 MySQL体系架构(二)
使用独立表空间来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:表名.ibd。这个文件是所谓的自扩展文件,也就是当不够用的时候它会自己增加文件大小,当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,我们也可以把系统表空间对应的文件路径不配置到数据目录下,甚至可以配置到单独的磁盘分区上。
2025-04-09 15:08:37
2001
原创 MySQL体系架构(一)
MySQL变种有好几个,主要有三个久经考验的主流变种:Percona Server,MariaDB和 Drizzle。它们都有活跃的用户社区和一些商业支持,均由独立的服务供应商支持。同时还有几个优秀的开源关系数据库,值得我们了解一下。
2025-04-09 15:07:10
1828
原创 MySql常见面试题
目前关系数据库有六种范式,常见范式:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。范式化设计优缺点:优点:可以尽量得减少数据冗余,使得更新快,体积小;缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化反范式化:优点:可以减少表得关联,可以更好得进行索引优化;
2025-04-08 16:15:54
964
原创 MVCC原理
1、如果被访问版本的trx_id属性值与ReadView中的creator_trx_id值相同,意味着当前事务在访问它自己修改过的记录,所以该版本可以被当前事务访问。2、如果被访问版本的trx_id属性值小于ReadView中的min_trx_id值,表明生成该版本的事务在当前事务生成ReadView前已经提交,所以该版本可以被当前事务访问。
2025-04-08 16:02:28
689
原创 事务和事务的隔离级别
在上面我们说过事务有一个称之为隔离性的特性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据,这样的话并发事务的执行就变成了串行化执行。张三借给李四生活费,借了两次,每次都是1000,张三的卡里开始有10000,李四的卡里开始有500,从理论上,借完后,张三的卡里有8000,李四的卡里应该有2500。一个事务必须被视为一个不可分割的最小单元,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不能只执行其中的一部分操作。
2025-04-06 08:00:00
898
原创 MySQL体系架构(二)
使用独立表空间来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:表名.ibd。这个文件是所谓的自扩展文件,也就是当不够用的时候它会自己增加文件大小,当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,我们也可以把系统表空间对应的文件路径不配置到数据目录下,甚至可以配置到单独的磁盘分区上。
2025-04-05 09:00:00
1006
原创 MySQL体系架构(一)
MySQL变种有好几个,主要有三个久经考验的主流变种:Percona Server,MariaDB和 Drizzle。它们都有活跃的用户社区和一些商业支持,均由独立的服务供应商支持。同时还有几个优秀的开源关系数据库,值得我们了解一下。
2025-04-05 08:00:00
822
原创 1.MySQL的执行原理-2
MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。I/O成本我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。CPU成本读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。对于InnoDB存储引擎来说,页是磁盘和内存之间交互的基本单位。
2025-04-04 09:00:00
924
原创 1. MySQL的执行原理-1
为了方便讲述,我们建立两个简单的演示表并给它们写入数据:连接的本质就是把各个连接表中的记录都取出来依次匹配的组合加入结果集并返回给用户。所以我们把e1和e2两个表连接起来的过程如下图所示:这个过程看起来就是把e1表的记录和e2的记录连起来组成新的更大的记录,所以这个查询过程称之为连接查询。连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,像这样的结果集就可以称之为笛卡尔积。
2025-04-04 08:00:00
2136
原创 MyBatis整合Spring的原理分析
设计模式类工厂模式建造者模式单例模式代理模式绑定:MapperProxy 延迟加载:ProxyFactory <br/>插件:PluginSpring <br>集成MyBaits: SqlSessionTemplate的内部SqlSessionInterceptorMyBatis<br>自带连接池:PooledConnection<br/>日志打印:ConnectionLogger、StatementLogger适配器模式。
2025-04-03 10:57:15
935
原创 SpringBoot自动装配的时候为什么没有走selectImports方法?
本文首先需要大家对SpringBoot的自动装配比较清楚,如果不清楚的可以移步我之前介绍的自动装配的相关视频和文章。
2025-04-03 10:45:10
1078
原创 SpringBoot源码之Tomcat加载原理
我们想要搞清楚在SpringBoot启动中到的是如何集成的Tomcat容器,这个就需要我们先对Tomcat本身要有所了解,不然这个就没办法分析了,所以我们先来回顾下Tomcat的基础内容。Tomcat版本是8.5.73。
2025-04-03 10:29:59
846
原创 重新认识SpringBoot
为了更好的掌握SpringBoot的内容,我需要先给大家介绍下Spring注解编程的发展过程,通过该过程的演变能够让大家更加清楚SpringBoot的由来。
2025-04-02 16:26:54
925
原创 SpringBoot自动装配原理分析(二)
在前面的分析中,Spring Framework一直在致力于解决一个问题,就是如何让bean的管理变得更简单,如何让开发者尽可能的少关注一些基础化的bean的配置,从而实现自动装配。所以,所谓的自动装配,实际上就是如何自动将bean装载到Ioc容器中来。实际上在spring 3.x版本中,Enable模块驱动注解的出现,已经有了一定的自动装配的雏形,而真正能够实现这一机制,还是在spirng 4.x版本中,conditional条件注解的出现。
2025-04-02 11:32:41
971
原创 SpringBoot自动装配原理分析(一)
为什么要讲SPI呢?因为在SpringBoot的自动装配中其实有使用到SPI机制,所以掌握了这部分对于SpringBoot的学习还是很有帮助的。,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。案例介绍先定义接口项目。
2025-04-02 11:20:00
379
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人