作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)我们日常写SQL时,子查询应该算是常客了。MySQL为子查询执行准备了各种优化策略,接下来我会写子查询各种优化策略是怎么执行的系列文章。本文以包含最简单的in条件的查询入手,介绍wherefieldin(8,18,88,...)这种值都是常量的in条件是怎么执行的。这虽然不是子查询,我们就把它当成子查询的邻居好了,用它作为子查询系列的开篇,算是离子查...
2023-02-01 11:15:22 3223浏览 0点赞 0回复 1收藏
作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)经过上一篇wherefieldin(...)的开场准备,本文正式开启子查询系列,这个系列会介绍子查询的各种执行策略,计划包括以下主题:不相关子查询(Subquery)相关子查询(DependentSubquery)嵌套循环连接(BlockedNestedLoopJoin)哈希连接(HashJoin)表上拉(TablePullout)首次匹配(FirstMatch)松散扫描(LooseScan)重复值消除(DuplicateWeedout)子查...
2023-02-01 11:15:02 3962浏览 0点赞 0回复 0收藏
作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)查询优化器是MySQL的核心子系统之一,成本计算又是查询优化器的核心逻辑。全表扫描成本作为参照物,用于和表的其它访问方式的成本做对比。任何一种访问方式,只要成本超过了全表扫描成本,就不会被使用。基于全表扫描成本的重要地位,要讲清楚MySQL的成本计算逻辑,从全表扫描成本计算开始是个不错的选择。本文内容基于MySQL8.0.29源码。目录1.概述...
2023-01-16 17:01:41 2579浏览 0点赞 0回复 1收藏
作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)这一篇我们就来聊聊不相关子查询转换为相关子查询,以及相关子查询执行的那些事。本文不相关子查询都是指的IN子查询,内容基于MySQL8.0.29源码。目录1.explaintype、ref列的显示逻辑2.optimizertrace3.IN子查询转换3.1要不要转换?3.2怎么转换4.执行流程5.最佳实践6.总结正文1.explaintype、ref列的显示逻辑本文示例SQL中的表,都来自于官...
2023-01-16 17:01:28 2749浏览 0点赞 0回复 0收藏
作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)回想当年,高并发还没有这么普遍,分布式也没有这么流行。初次接触二阶段提交,源于想以事务的方式实现对MongoDB中多个集合数据的修改,而MongoDB本身不支持事务,官方推荐的方案就是使用二阶段提交。MySQL和事务早已成为工作中不可或缺的一部分,随着分布式的流行,二阶段提交出现在视野中的次数也越来越多。然而,MySQL、事务、二阶段提交这3个名...
2022-07-25 17:17:09 5101浏览 0点赞 0回复 0收藏
作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)redo日志只有崩溃恢复的时候才能派上用场,undo日志不一样,它承担着多重职责,MySQL崩溃恢复、以及正常提供服务期间,都有它的身影。按照使用频次,undo日志的多重职责如下:职责1,为MVCC服务,减少读写事务之间的相互影响,提升数据库的并发能力。职责2,保证数据库运行过程中的数据一致性。事务回滚时,把事务中被修改的数据恢复到修改之前的状...
2022-07-25 17:16:39 4797浏览 0点赞 0回复 0收藏
作者操盛春来源一树一溪(ID:lovespring52)转载请联系授权(微信ID:csch52)InnoDB索引页的大小默认为16K,然而,varchar、text、blob类型的单个字段内容长度就有可能超过16K,这种情况下,整个索引页都存不下一个字段的内容了。解决这个问题的办法,是找到那些内容比较长的字段作为溢出字段,把它们的内容存放到溢出页中,减少留在索引页记录中的内容。接下来,我们来聊聊InnoDB选择溢出字段的逻辑。本文内容基于MySQL8.0.2...
2022-07-19 16:35:17 5293浏览 0点赞 0回复 0收藏
9.B+树是不是有序?B+树和B树的主要区别?B+树索引,一次查找过程B+树是有序的。B+树和B树的主要区别?•B树内部节点是保存数据的;而B+树内部节点是不保存数据的,只作索引作用,它的叶子节点才保存数据。•B+树相邻的叶子节点之间是通过链表指针连起来的,B树却不是。•查找过程中,B树在找到具体的数值以后就结束,而B+树则需要通过索引找到叶子结点中的数据才结束•B树中任何一个关键字出现且只出现在一个结...
2022-06-29 13:51:29 5228浏览 0点赞 0回复 0收藏
11.JVM调优11.1一般什么时候考虑JVM调优呢?•Heap内存(老年代)持续上涨达到设置的最大内存值;•FullGC次数频繁;•GC停顿时间过长(超过1秒);•应用出现OutOfMemory等内存异常;•应用中有使用本地缓存且占用大量内存空间;•系统吞吐量与响应性能不高或下降。11.2JVM调优的目标•延迟:GC低停顿和GC低频率;•低内存占用;•高吞吐量;11.3JVM调优量化目标•Heap内存使用率
2022-06-29 13:51:22 4847浏览 0点赞 0回复 0收藏
4.Future实现阻塞等待获取结果的原理?Future.get()用于异步结果的获取。它是阻塞的,背后原理是什么呢?我们可以看下FutureTask的类结构图:FutureTask实现了RunnableFuture接口,RunnableFuture继承了Runnable和Future这两个接口,对于Runnable,我们太熟悉了,那么Future呢?Future表示一个任务的生命周期,并提供了相应的方法来判断是否已经完成或取消,以及获取任务的结果和取消任务等。publicinterfaceFuture<V>{booleanc...
2022-06-29 13:51:12 4833浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩,最近一位朋友(6年工作经验)面了腾讯云,以下是面试题和答案。加油,一起卷。1.聊聊项目,好的设计,好的代码2.谈谈什么是零拷贝?3.一共有几种IO模型?NIO和多路复用的区别?4.Future实现阻塞等待获取结果的原理?5.ReentrantLock和Synchronized的区别?Synchronized的原理?6.聊聊AOS?ReentrantLock的实现原理?7.乐观锁和悲观锁,让你来写你怎么实现?8.Paxos协议了解?工作流程是怎么样...
2022-06-29 13:50:37 5506浏览 0点赞 0回复 0收藏
3.RedisCluster集群哨兵模式基于主从模式,实现读写分离,它还可以自动切换,系统可用性更高。但是它每个节点存储的数据是一样的,浪费内存,并且不好在线扩容。因此,ReidsCluster集群(切片集群的实现方案)应运而生,它在Redis3.0加入的,实现了Redis的分布式存储。对数据进行分片,也就是说每台Redis节点上存储不同的内容,来解决在线扩容的问题。并且,它可以保存大量数据,即分散数据到各个Redis实例,还提供复制和故障转...
2022-06-29 13:50:17 5335浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。今天跟小伙伴们一起学习Redis的主从、哨兵、RedisCluster集群。•Redis主从•Redis哨兵•RedisCluster集群1.Redis主从面试官经常会问到Redis的高可用。Redis高可用回答包括两个层面,一个就是数据不能丢失,或者说尽量减少丢失;另外一个就是保证Redis服务不中断。•对于尽量减少数据丢失,可以通过AOF和RDB保证。•对于保证服务不中断的话,Redis就不能单点部署,这时候我...
2022-06-29 13:50:00 5388浏览 0点赞 0回复 0收藏
8、kafka是如何保证消息的有序性?kafka这样保证消息有序性的:•一个topic,一个partition,一个consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。(全局有序性)•写N个内存queue,具有相同key的数据都到同一个内存queue;然后对于N个线程,每个线程分别消费一个内存queue即可,这样就能保证顺序性。大家可以看下消息队列的有序性是怎么推导的哈:消息的有序性,就是指可以按照消息的发送顺序来消费。有...
2022-06-29 13:49:46 4055浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。最近技术讨论群一位朋友去面试,分享了一份面试真题,我整理了一下答案给大家。如果有不正确的,欢迎指出哈,一起进步。•Redis的key和value可以存储的最大值分别是多少?•怎么利用Redis实现数据的去重?•Redis什么时候需要序列化?Redis序列化的方式有哪些?•MySQL的B+树的高度怎么计算?•线程池的状态有哪些?获取多线程并发执行结果的方式有哪些?•线程池原理...
2022-06-29 13:49:24 4788浏览 0点赞 0回复 0收藏
前言大家好,我是程序员田螺。今天给大家分享一道经典面试题:Redis持久化有哪几种方式,怎么选?•AOF持久化•RDB持久化•AOF和RDB如何选择1、AOF持久化Redis是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了两种持久化方式,RDB和AOF。我们先来介绍AOF。AOF(appendonlyfile)持久化,采用日志的形式来记录每个写操作,追加到AOF文件的末尾。Redis默认情况是不开启AOF的。重启...
2022-06-29 13:48:46 8574浏览 0点赞 0回复 0收藏
13.Hashmap是怎样实现的?为什么要用红黑树,而不用平衡二叉树?为什么在1.8中链表大于8时会转红黑树?HashMap是线性安全的嘛?如何保证安全?13.1Hashmap是怎样实现的?•JDK1.7Hashmap的底层数据结构是数组+链表•JDK1.8Hashmap的底层数据结构是数组+链表+红黑树数据元素通过映射关系,即散列函数,映射到桶数组对应索引的位置,插入该位置时,如果发生冲突,从冲突的位置拉一个链表,把冲突元素放到链表。如果链表长...
2022-06-29 11:55:03 6202浏览 0点赞 0回复 0收藏
9.Redis持久化有哪几种方式,怎么选?既然它是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了两种持久化方式,RDB和AOF。9.1AOF持久化AOF(appendonlyfile)持久化,采用日志的形式来记录每个写操作,追加到AOF文件的末尾。Redis默认情况是不开启AOF的。重启时再重新执行AOF文件中的命令来恢复数据。它主要解决数据持久化的实时性问题。AOF是执行完命令后才记录日志的。为什么不先记录日志再...
2022-06-29 11:54:34 4569浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。有位朋友工作三年,去面试,给大家整理一下面试题,并附上答案。1.Mysql索引在什么情况下会失效2.MySql的存储引擎InnoDB与MyISAM的区别3.Mysql在项目中的优化场景,慢查询解决等4.Mysql有什么索引,索引模型是什么5.B树与B+树的区别?为什么不用红黑树6.Mysql主从同步怎么做7.乐观锁与悲观锁的区别?8.聊聊binlog日志9.redis持久化有哪几种方式,怎么选?10.redis主从同步是怎样的过程?11.red...
2022-06-29 11:54:18 4578浏览 0点赞 0回复 0收藏
17.消息中间件如何做到高可用消息中间件如何保证高可用呢?单机是没有高可用可言的,高可用都是对集群来说的,一起看下kafka的高可用吧。Kafka的基础集群架构,由多个broker组成,每个broker都是一个节点。当你创建一个topic时,它可以划分为多个partition,而每个partition放一部分数据,分别存在于不同的broker上。也就是说,一个topic的数据,是分散放在多个机器上的,每个机器就放一部分数据。有些伙伴可能有疑问,每个part...
2022-06-29 11:25:15 4480浏览 0点赞 0回复 0收藏