- 博客(25)
- 问答 (1)
- 收藏
- 关注
原创 MySQL进阶【十三】—— 深度探究 BufferPool 提升效率的原理
BufferPool是什么BufferPool是如何工作的故障重启后如何保障数据恢复未完待续。。。
2020-10-08 09:53:52
358
原创 MySQL进阶【十二】—— 深挖Innodb事务的多版本控制(MVCC)的实现原理
什么是多版本控制多版本控制解决优势实现原理可重复读和读已提交的MVCC有何不同
2020-10-08 09:48:16
366
原创 MySQL进阶【七】—— count(*)、count(1)、count(id)到底谁更快
前言一直以来MySQL查询数量到底谁最快,一直是一个比较热的话题,且很多人搞不懂真相,本文将带你从底层原理去了解,到底count(*)、count(1)、count(id)、count(字段)谁更快示例表+-----------+-----------------------------------------------------------------------------------------------------------------------------------------
2020-10-02 17:36:21
785
原创 MySQL进阶【六】—— MySQL的嵌套循环连接与基于块的嵌套循环连接
示例表CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),KEY idx_a (a)) ENGINE=InnoDB DEFAULT CHARSET=utf8;create table t2 like t1;‐‐ 插入一些示例数据‐‐ 往t1表插入1万行记录drop procedure if exists in
2020-09-29 19:48:45
1887
1
原创 MySQL进阶【五】—— MySQL分页查询优化
分页查询优化分页查询在项目中非常常见,一般数据量越大,分页的速度越慢,mysql在limit时,不是先找到limit的起始行,而是将limit的全部数据检索出来,再去到需要的数据块,概念可能比较模糊,没关系,接下来案例中继续讲解mysql> select * from employees limit 10000,10;+-------+------------+-------+----------+---------------------+| id | name | a
2020-09-29 15:05:43
314
原创 MySQL进阶【九】—— MySQL查询优化器是如何选择索引的
MySQL查询优化器是如何选择索引的MySQL的查询优化器,具有非常强大的功能,那MySQL的查询优化器是如何选择索引的呢?本文只探究查询优化器选择索引的大体逻辑,没有深入到C++源码,日常开发同学了解到这个程度足够了,如果是DBA同学,显然需要去读一读MySQL的C++源码通过MySQL提供的trace工具,我们一起探究下查询优化器都做了什么mysql提供了trace工具,默认是关闭的,可以通过命令将其打开mysql> set session optimizer_trace="en
2020-09-27 19:16:07
3383
转载 MySQL进阶【十四】—— MySQL的语句执行顺序(必看!!!)
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序:sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。一、sql执行顺序(1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6) avg,sum…(7)having
2020-09-25 14:49:13
263
转载 MySQL进阶【十五】—— MySQL优化之my.conf配置详解
转载地址:https://blog.csdn.net/u014044812/article/details/78929579最近项目不太忙,所以有时间静心来研究下mysql的优化,对于MySQL的设置是否合理优化,直接影响到网站的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验进行判断,然后设置合理的参数。 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQ.
2020-09-25 14:18:43
308
原创 MySQL进阶【四】—— MySQL索引优化实战
示例表CREATE TABLE `employees` (`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` timestamp NO
2020-09-24 20:21:15
526
原创 MySQL进阶【三】—— Explain详解与实战
Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL前期准备官方文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.htmlSQL语句示例表: DROP TABLE IF EXISTS `actor`; CREATE T
2020-09-22 20:21:07
321
原创 MySQL进阶【二】—— 一文讲清楚为什么MySQL选择B+树索引
MySQL的几种索引结构https://www.cs.usfca.edu/~galles/visualization/BST.html 数据结构的一个学习网站B树B树在MySQL的结构1、叶子节点具有相同的深度,叶子阶段的指针都为空2、叶子节点和跟节点,均挂有数据块(因所有节点都挂有数据块,大大降低了索引树存储索引的数量)3、所有索引不重复4、节点从左到右是递增的Hash1、数组+链表的实现方式(与Java中的hashmap类似)2、对索引key进行一次hash运算就可以
2020-09-20 12:15:46
762
1
原创 MySQL进阶【一】—— 一条SQL是如何执行的
MySQL 架构分层server 层server层主要包括连接器、词法分析器、查询优化器、执行器连接器:主要用途,客户端连接到mysql的服务器mysql -u -h -p //连接mysql的命令词法分析器:将一条SQL语句拆分,结构化,形成语法树。语法不正确、字段或表名不正确,会在这个阶段被发现,并进行错误提示1、词法分析2、语法分析3、语义分析4、构造语法树5、生成执行计划6、计划的执行语法树是如何生成的创建一张表CREATE TABLE `test`
2020-09-20 10:49:30
280
原创 Jvm 深入理解(五)—— 垃圾收集算法
Java 进程的内存分配和垃圾收集由Jvm负责完成,前面有说过内存分配的原则,那垃圾收集是如何完成的呢。通过标记算法确定哪些对象可以回收,通过回收算法将可回收的对象回收掉。标记算法引用计数法(Java中没有采用这种算法)原理:在对象中添加一个计数器,每一次被引用,计数器 +1 ,当引用失效后,技数器 -1 。当技数器为0时,对象即可被回收。优点:实现简单,判断快,减少标记时间缺点:无法...
2019-05-08 10:24:54
182
原创 Group by + Limit 的效率优化
背景最近接手一个项目,清洗历史表中的数据,在原有表中添加一个新的字段,并根据user_id进行分组,查询到证件号、证件类型后,换取唯一编码,将唯一编码存入历史数据中,以达到未来替换user_id的效果。清洗数据的大体思路,将数据库中带清洗数据分10段,每段交给一条线程负责处理,项目启动后,出现一个问题,查询数据库中的数据出现 timeOut,排查发现是因为 limit m,n 中的m太大,导致...
2019-04-23 20:45:53
7958
2
原创 Java 多线程事务回滚 ——多线程插入数据库时事务控制
背景日常项目中,经常会出现一个场景,同时批量插入数据库数据,由于逻辑复杂或者其它原因,我们无法使用sql进行批量插入,这个时候我们首先想到多线程并发插入,但是如何控制事务呢 … 直接上干货实现效果开启多条子线程,并发插入数据库当其中一条线程出现异常,或者处理结果为非预期结果,则全部线程均回滚代码实现@Servicepublic class CompanyUserBatchServ...
2019-04-18 18:34:04
21633
11
原创 Jvm 深入理解(四)—— 探究对象的结构(Hotspot虚拟机)
对象结构在HotSpot虚拟机中,对象在内存中的存储分为三块区域:对象头(header)、实例数据(instance data)、对齐填充(padding)。普通对象的结构数组对象的结构上面两个图中可以看出,以下信息- markWord(标记字段):大小是4个字节,主要存储一系列的标志位信息,不如轻量级锁的标志位、偏向锁的标志位等- Class pointer(类型指针):大小...
2019-04-10 20:53:52
254
原创 算法入门到精通(一) —— 基本概念
算法有很多专业的概念,我们简单来说,算法 就是同一个问题的不同解决方式数据结构数据结构是数据的不同存储结构时间复杂度算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述常见算法的时间复杂度《忆排序 面试我最强》作者:马士兵选炮插,快归堆希统计姬,n 方 n老 n一三,对 n 加 k n 乘 k...
2019-04-07 19:57:15
489
原创 Jvm 深入理解(二)—— Java 虚拟机的内存管理
Jvm 内存管理程序计数器程序计数器是一块比较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器程序计数器属于线程独占区如果线程执行的是 java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址,如果执行的是native方法,这个计数器的值为undefined程序计数器是 Java 虚拟机中唯一没有OutOfMemoryError( 内存溢出 )的区域Java虚拟...
2019-04-03 21:03:19
212
原创 Jvm 深入理解(一) —— jvm简介及内存模型
Jvm 简介jvm是java代码的运行平台,真正实现Java代码,一次编译、到处运行。是Java跨平台的基础。经过20年的发展,jvm先后出现了很多版本和类型,目前比较流行的、性能比较高的有 hotspot、j9、jRocket。国内也有一些定制化开发的jvm,比如taobaoVM是阿里根据淘宝的业务需求,开发的java 虚拟机,在适合的配置下,效率非常高。Jvm的内存模型jvm主要分为...
2019-04-03 19:41:46
226
原创 Nginx教程(二)-- 使用说明以及注意事项
简述平台使用nginx 主要是使用其核心的http模块,nginx做的工做就是接收到http请求,然后取搜索配置文件里的Location Block (以location 指令包装的指令块) 进行匹配,根据匹配到的location去完成相应的操作,这些操作一般就是把http请求进行重定向,然后转发(例如访问 localhost 的请求转发到 www.baidu.com),或者映射到具体的硬盘目录...
2019-03-12 20:48:26
148
原创 Nginx 教程(一)-- 工作原理及安装配置
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在一个BSD-like协议下发行,由俄罗斯人IgorSysoev开发,共俄罗斯大型的搜索引擎Rambler使用。nginx特点是占内存少,并发能力强。
2019-03-12 19:15:09
208
空空如也
java 破解验证码 , 求源码
2017-10-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人