自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 MYSQL底层原理4-Innodb文件系统的基本结构

,默认是一个表一个。最后,索引是方便查询的,索引列的数据不适合放大的,它占用的空间一多,那么B+ tree一层中能放的个数就越少。生成的这个棵B+tree树拥有全量数据,数据都顺序的存放在叶子节点(每个节点不超过16k,超过的会放到溢出页,叶子节点只放一个引用地址),一般3层叶子节点即可存放2千万数据了,4层一般上亿条数据,通过稳定的IO次数即可查到指定数据。作为主键,所以我们在设计表结构的时候最好指定一个主键,不然的话会影响数据插入性能,插入数据需要生成ROW_ID,而生成的ROW_ID是全局共享的,

2022-12-24 22:05:27 229 1

原创 MYSQL底层原理3-底层解析(Innodb、CheckPoint)

上面说的pool技术,那么它是怎么刷到磁盘的呢,比如你执行了一条DML语句,pool的页就变成了脏页,因为pool里面的数据要比磁盘上的数据要新,两者数据不一致。所以数据库需要按一定的规则将脏页刷到磁盘上,如果每次修改都刷盘,那这个pool基本意义也就不是很大了,开销会非常的大。增删改时,首先顺序写入redolog(顺序写非常快),然后修改pool页(pool里面没有的插入insert buffer),然后各种线程按一定规则将数据刷到磁盘上,发生故障的话就使用redolog进行数据恢复。

2022-11-17 14:24:35 450

原创 MYSQL底层原理2-表一级缓存、二级缓存

这个table实例里面保存了对TABLE_SHARE的引用,从这里面获取一些表的基础信息,还有一些属性,比如存储引擎的信息也会被初始化(引擎的handler),这个实例对象创建完成之后,它就具备了和存储引擎交互的能力了(通过handler交互),这个实例创建完成之后也会放入缓存中,供下次使用时调用,避免反复创建实例。在访问的时候每个客户端之间是隔离的,还需要补填一些独有的信息,比如说不同用户对该表的权限等等,所以要想操作这个表,还需要创建一个表对象来供当前客户端(线程)使用。是缓存就会有淘汰策略。

2022-11-16 18:25:47 1339

原创 MYSQL底层原理1-网络层

对于IO密集时,要减少连接数,譬如你要读写成千上万的数据,这时候你应该考虑减少连接数(和机器CPU数相等),你会发现更少连接数会带来性能数百倍的提升。1、先聊一波网络层,mysql的网络连接是基于BIO的,它本质上是不接受大量连接的,所以设置了。打算深入了解一波Mysql的底层原理,所以特在此进行一番记录。先了解一波mysql的整体分层架构。

2022-11-16 18:13:14 372

原创 递归算法简介及入门算法

递归算法入门

2022-10-13 14:34:43 1337

原创 LRU算法简介级对应JAVA实现

第一种利用LinkedHashMap添加元素是头插法,自带移除指定元素api,可迭代移除尾部元素三个特性可快捷实现LRU算法,上代码!老铁们这么聪明,一看应该就懂了,不会你来我家!以上两种方法只是简单的为了实现算法写的,真实业务场景中使用最好抽象出一套缓存接口,定义好方法,方便扩展。Java中使用的很多中间件中的淘汰策略都有涉及LRU算法,比如redis的缓存过期策略其中就有LRU策略。1、简单粗暴的借用LinkHashMap实现,复杂度比较高。最近在准备面试,所以刷刷题,记录一波。

2022-09-30 10:48:42 507

原创 Filter和Interceptor区别

java中过滤器和拦截器的区别

2022-08-25 16:29:56 322

原创 JVM类加载过程

java、jvm类加载的过程分为加载、验证、准备、解析、初始化五个阶段。

2022-08-18 20:48:00 248

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除