xuMengqi's Blog

# 标签: 总结


为什么需要优化SQL语句? 从开发人员的角度来说,优化SQL语句是为了能够支撑更大的数据量,提供更快性能更好的业务接口。 从用户的角度来说,优化SQL语句是为了给用户提供更好的服务,如更低的响应时间(RT)和更高的每秒事务处理数(TPS)。 如何定位并优化慢的SQL语句? 1. 保持良好的习惯,在每编写完一条SQL语句后都分析下该语句的执行计划,以评估该语句的查询速度,排查潜在的...
2024年03月19日
徐梦旗

数据库调优 为什么需要数据库调优? 数据库调优是为了提高数据库的性能、降低接口的响应时间等。体现在以下几个指标: 响应时间(Response Time,RT) 每秒事务处理量(Transaction Per Second,TPS) 每秒查询处理量(Query Per Second,QPS) 如何进行数据库压力测试? 可以使用JMeter工具进行数据库压力测试。下图是使用主键...
2024年03月08日
徐梦旗

锁 数据库中的锁有什么作用? 锁是一种并发控制手段,避免多个事务同时对同一条记录进行修改,用来解决线程安全问题。 数据库中的锁有哪些分类? 按照锁的功能来划分: 读锁(Read Locks),也叫共享锁[^1](Shared Locks,S锁)。 写锁(Write Locks),也叫排他锁[^1](Exclusive Locks,X锁)。 按照锁的粒度来划分: 全局锁(G...
2024年01月22日
徐梦旗

索引的概念 什么是索引? 索引[^1](Index)是一种数据结构,用来加快查询的速度。如果表中的记录较少时,不创建索引也能满足查询的需求,但如果表中的记录较多时,如果不建立索引查询的速度会很慢。索引本质上是一种空间换时间的策略。 > 可以通过show index from <table_name>命令可以查看指定表中建立的索引。 什么是索引组织表? 索引组织表(Index O...
2024年01月19日
徐梦旗

事务 什么是事务? 事务是指一组操作要么全部成功,要么全部失败。事务具有四大特性[^1](ACID): 原子性(Atomicity):指一组操作是原子的,要么全部成功,要么全部失败。 一致性(Consistency):指事务执行前后,数据需要是一致的状态。 隔离性(Isolation):指一个事务执行时,不能受其他事务影响。 持久性(Durability):指事务提交后,对数...
2024年01月17日
徐梦旗

MySQL逻辑架构 MySQL的逻辑架构由哪些部分组成? MySQL的逻辑架构由服务层和存储引擎层组成。其中服务层有以下几部分: 连接器:管理权限,验证连接。 查询缓存:命中缓存直接返回结果(在MySQL8.0版本移除)。 分析器:词法分析,语法分析。 优化器:生成执行计划,选择合适的索引。 执行器:调用存储引擎接口,返回结果。 其中存储引擎层有InnoDB,MyISAM和...
2024年01月14日
徐梦旗

调优理论 为什么需要调优? 提高程序运行的性能,如提高程序的吞吐量、降低程序的响应时间等。 解决程序出现的问题,如解决内存溢出、内存泄漏、死锁等问题。 > 性能问题一般需要调整程序代码,虚拟机调优是最后手段。 调优的过程是怎样的? 1. 监控虚拟机的行为,如堆的内存占用、GC次数、GC耗时等; 2. 确定目标,如降低内存占用、减小响应延迟等; 3. 制定方案,如调整虚拟机参...
2023年09月23日
徐梦旗

垃圾回收原理 什么是垃圾? 垃圾是指不再被使用的对象,也就是死亡的对象。 为什么需要垃圾回收? 由于内存空间是有限的,需要垃圾回收来释放内存空间,以保证程序的正常运行。 如何找到垃圾? 引用计数法:当对象被引用时,其引用计数器加一;当去除对象的引用时,引用计数器减一。当引用计数器的值为零时,代表该对象是垃圾对象。引用计数法不能解决循环依赖的问题。 可达性分析:当对象不能被...
2023年09月12日
徐梦旗

对象的生命周期 对象是如何创建的? 1. 通过new指令或反射等方式创建新的对象; 2. 若该对象对应的类从未被加载过,则进行类的加载; 3. 在堆中(或栈上分配)为对象分配内存空间; 4. 初始化对象的内存空间为零值; 5. 为对象设置必要的信息,如类的元数据,对象的哈希码,GC分代年龄等; 6. 执行对象的构造器方法<init>。 plantuml title 对象的创建 (*)...
2023年09月09日
徐梦旗

堆 堆中存放的是什么? 对象实例存放在Java堆[^1](Java Heap)中。堆是线程共享的。 堆内存是如何划分的? 堆内存被划分为新生代和老年代两部分,新生代又被划分为一个Eden区和两个大小相同的Survior区。将堆内存划分为新生代和老年代主要是为了提高垃圾收集的效率,基于以下两个假说: 弱分代假说:大部分对象都是朝生夕灭的。 强分代假说:熬过越多次垃圾收集的对象越...
2023年09月01日
徐梦旗

类加载机制 什么是类加载机制? 类加载(Class Loading)是指Java虚拟机将class字节码文件加载到内存中并生成Class对象的过程。 > 虚拟机参数:可以通过verbose:class来打印类加载的日志。 类加载有哪些步骤? 类加载有以下几个步骤: 1. 通过全限定类名获取到类的class二进制字节流,即加载[^1](Loading); 2. 验证class二进...
2023年07月31日
徐梦旗