02 2021 档案

摘要:mysql如何处理脏写的 mysql处理写并发,说白了就是靠的锁机制,让多个事务对一行数据执行写操作的时候串行化,避免同时写一行数据。如果现在有一个事务来了要更新这行数据,它会先看看这行数据此时有没有人加锁?一看没人加锁,太好了,说明他是第一个人,捷足先登了。此时这个事务就会创建一个锁,里面包含了自 阅读全文
posted @ 2021-02-26 13:03 吴磊的 阅读(245) 评论(0) 推荐(0)
摘要:多事务并发的问题 对 innodb引擎执行流程 和 buffer pool 足够了解的话,那一定知道mysql系统在初始化的时候bufferpool会将内存分为多个缓存页,此时的free链表都是空的;在对数据做操作的时候,就会将磁盘的数据页加载到内存的缓存页中去,此时这个缓存的描述信息就会从free 阅读全文
posted @ 2021-02-24 14:29 吴磊的 阅读(545) 评论(0) 推荐(0)
摘要:表空间 我们脑子里理解数据的存储就是‘一个库里面有一些表,表里面有很多字段,然后有很多行数据’,但其实这只是我们的逻辑概念,数据在磁盘物理存储方式可不是这样的。mysql在服务器上是以一个文件夹的形式出现的,你创建了test数据库,那么在磁盘上就会出现test的目录,而创建的那些表,其实都是有一个表 阅读全文
posted @ 2021-02-19 22:31 吴磊的 阅读(2030) 评论(0) 推荐(0)
摘要:在innodb引擎执行流程中,我们已经知道了buffer pool的重要性,对数据库执行增删改查操作,其实都是在内存里的Buffer Pool中进行的。buffer pool的本质就是一片数据内存结构,默认比较小只有128mb,由一大堆的缓存页和描述数据块组成的,然后加上了各种链表(free、flu 阅读全文
posted @ 2021-02-15 23:45 吴磊的 阅读(1330) 评论(0) 推荐(0)
摘要:平时我们在做应用开发时,一般情况下都会连接到一个MySQL数据库上去,把MySQL当个黑盒子一样执行各种增删改查的语句。里面的逻辑很多人都不清楚。那现在一个简单的 update users set name = "靓仔" where name = "吴磊" 在执行的时候,究竟会经过哪几步呢? 首先前 阅读全文
posted @ 2021-02-14 23:56 吴磊的 阅读(384) 评论(0) 推荐(0)
摘要:一般我们的java应用系统都是部署在4核8g的服务器上,每秒大概能抗住几百个请求左右。而我们通常都是java程序读取mysql数据,经过逻辑处理后响应到页面。所以很大程度上,mysql的性能直接影响了我们的系统能承载多大的并发量。一般数据库都是选择8核16g起步,每秒1~2000并发没问题;甚至是1 阅读全文
posted @ 2021-02-14 18:39 吴磊的 阅读(1427) 评论(0) 推荐(0)
摘要:故事背景 cpu持续走高,直接导致服务器宕机,无法对外提供服务。 排查思路 1. 一般cpu过高只有两种情况:1.线程太多,可以用命令看一下;2.频繁full gc,因为full gc是很消耗cpu资源的。 2. 用jstat命令看了下,果然是频繁full gc造成的。但是内存分配比例和大小还是很合 阅读全文
posted @ 2021-02-10 13:57 吴磊的 阅读(257) 评论(0) 推荐(0)
摘要:在前面文章我们了解到了jvm的内存模型、对象分配的规则、以及对象何时进入到老年代、垃圾回收器,并且知道jvm调优的本质就是对堆内存进行调优,尽量使对象留在新生代中、少触发老年代gc。那么本文将介绍生产环境上如何去排查问题这样的一个思路。用的是最原始、有low、也最有效的jstat命令,因为每个公司情 阅读全文
posted @ 2021-02-07 23:35 吴磊的 阅读(1287) 评论(0) 推荐(0)
摘要:Young GC 案例准备 /** * 案例代码 */ public class Demo1 { public static void main(String[] args) { // 1. 在eden区创建了一个1m数组对象,main线程虚拟机栈中 // 的main()方法栈帧的局部变量arry1 阅读全文
posted @ 2021-02-04 17:52 吴磊的 阅读(1956) 评论(0) 推荐(0)

//生成目录索引列表