mysql锁与事务(MVCC、BufferPool)

2021-02-21
阅读 2 分钟
2.2k
概述:锁分为乐观锁和悲观锁,cas锁是乐观锁,mysql中的读锁和写锁都是悲观锁。cas锁:修改数据时判断数据版本号是否是修改之前的数据,如果数据已经被修改则放弃本次修改或者取出最新数据重新进行计算修改直到修改成功。读锁(共享锁):给数据加读锁,所有事务线程都可以读取数据,但除了当前线程之外其他线程对数据的...

mysql索引优化实践

2021-02-19
阅读 7 分钟
2.3k
mysql底层会对sql进行查询优化,依据各个方案所产生的cost成本计算最优执行方案,sql的最终执行方案是否走了索引,抑或为什么没有走索引的原因可以用trace工具来分析。开启trace:

MySql-sql语句执行流程

2021-02-18
阅读 2 分钟
2.2k
MySql内部组件结构Server层连接器 {代码...} 查询缓存 {代码...} 语法分析器 {代码...} {代码...} 优化器 {代码...} 执行器 {代码...} store层 {代码...} bin-log归档 {代码...}

sql优化最佳实现(Explain介绍)

2021-02-17
阅读 3 分钟
4.4k
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL

MySql主要索引数据结构

2021-02-15
阅读 2 分钟
1.9k
索引数据结构1、 二叉搜索树(Binary Search Tree)二叉搜索树是每个节点最多有两个子节点的树,按照右侧子节点大于本节点,左侧子节点小于本节点的规律排列,可以用作搜索,结构如下图所示二叉树虽然可以用于查找,但在某种特定情况下查找效率并不高,类似于下图:2、红黑树对于二叉树的缺点,红黑树是一种拥有自平衡属...

JVM 调优流程

2021-02-13
阅读 26 分钟
2.8k
调优分类说明jvm调优主要分为两个方面,代码调优和GC调优。无论哪种调优,使用top命令查看当前内存和CPU使用情况是否存在问题 {代码...} 检查是否有异常的%CPU 和%MEM占用 {代码...} 可以看到,我的系统里只有一个mysql占用较高,但也仅为1.7%的内存占用代码调优代码调优是根据服务器的运行状态判断代码是否存在可优化的...

JVM GC机制概要

2021-02-12
阅读 5 分钟
1.6k
serial和parallel、parNew以及CMS都是基于分代模型实现的GC组件。分代模型将内存大致分为几个部分:年轻代、幸存区、老年代。其中年轻代和幸存区由一个回收器组件进行回收。老年区由另一个组件进行回收。

JVM内存分配机制

2021-02-06
阅读 1 分钟
1.6k
对象创建的主要流程内存分配主要流程分代GC主要流程

JVM字节码文件结构说明

2021-02-06
阅读 4 分钟
1.8k
主版本号( major version ):二个字节 00 34  表示为jdk的主版本号,34对于10进制为52那么52代表的是1.8,51代表的是1.7 等等一直类推下去

JVM整体结构

2021-02-03
阅读 2 分钟
1k
堆:存储new出来的实例化对象,大多数情况实例化对象会存放在Eden区,当eden区满了之后字节码执行引擎会使用minor gc进行垃圾回收(用gc root寻址法等)。方法区(元空间/永久带):使用的是物理内存,存放全局的常量,静态变量,类信息(对象在堆中,方法区中存的依旧是指针)

java类加载机制(windows)

2021-02-02
阅读 5 分钟
1.2k
1、执行run方法后java.exe调用jvm.dll文件创建jvm虚拟2、创建虚拟机的过程中创建出引导类加载器实例(c++)3、c++代码调用java代码创建jvm启动器sum.misc.Launcher.getLauncher()4、launcher.getClassLoader()进行java类的加载

微服务架构演变

2021-02-02
阅读 4 分钟
3.9k
换言之,微服务就是服务与服务之间进行解耦,每一个类型的服务模块单独构建成一个项目,利用HTTP、消息中间件(MQ)或者服务注册机制(zookeeper)构建成项目和项目组成的网络(微服务网络)进行服务调用,和SOA(面向服务编程)相比,微服务的解耦更为彻底,粒度更小,且每一个微服务一般基于容器(docker)拥有独立的...