- 博客(15)
- 收藏
- 关注
转载 怎么分析一条 SQL 的性能
这篇文章将给大家介绍如何使用 explain 来分析一条 sql 。网上其实已经有非常多的文章都很详细的介绍了 explain 的使用,这篇文章将实例和原理结合起来,尽量让你有更好的理解,相信我,认真看完你应该会有特别的收获。explain 翻译过来就是解释的意思, 在 mysql 里被称作执行计划,即可以通过该命令看出 mysql 在经过优化器分析后决定要如何执行该条 sql 。说到优化器,再多说一句,mysql 内置了一个强大的优化器,优化器的主要任务就是把你写的 sql 再给优化一下,尽可能以更
2020-07-07 22:07:02 405
转载 数据库优化的几个阶段
引言大家在面试的时候,是否遭遇过,面试官询问你们是如何进行数据库优化的?那这个问题应该怎么答呢?第一阶段 优化sql和索引这才是调优的第一阶段啊,为什么呢?因为这一步成本最低啊,不需要加什么中间件。你没经过索引优化和SQL优化,就来什么水平拆分,这不是坑人么。那步骤是什么样呢?我说个大概(1)用慢查询日志定位执行效率低的SQL语句(2)用explain分析SQL的执行计划(3)确定问题,采取相应的优化措施,建立索引啊,等第二阶段 搭建缓存在优化sql无法解决问题的情况下,才考虑搭
2020-07-06 21:56:35 351 1
转载 优化过后把 SQL 执行效率提高了 10,000,000 倍
场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表: 数据100条create table Course( c_id int PRIMARY KEY, name varchar(10))学生表: 数据70000条create table Student( id int PRIMARY KEY, name varchar(10))学生成绩表:数据70w条CREATE table SC( sc_id int PRIMARY KEY, s_id i
2020-07-06 21:46:14 393
转载 明明使用了索引SQL查询还是慢的原因
案例剖析为了实验,我创建了如下表:CREATE TABLE `T`(`id` int(11) NOT NULL,`a` int(11) DEFAUT NULL,PRIMARY KEY(`id`),KEY `a`(`a`)) ENGINE=InnoDB;该表有三个字段,其中用id是主键索引,a是普通索引。首先SQL判断一个语句是不是慢查询语句,用的是语句的执行时间。他把语句执行时间跟long_query_time这个系统参数作比较,如果语句执行时间比它还大,就会把这个语句记录到慢查询日志里
2020-07-06 21:11:03 2289 2
转载 MySQL性能优化指南
MySQL性能1. 最大数据量抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。文件系统单文件大小限制FAT32最大4GNTFS最大64GBNTFS5.0最大2TBEXT2块大小为1024字节,文件最大容量16GB;块大小为4096字节,文件最大容量2TBEXT3块大小为4KB,文件最大容量为4TBEXT4理论可以大于16TB《阿里巴巴Java开发手册》提出单表行数超过500万行
2020-07-06 20:54:32 262
转载 分布式事务解决方案
概述事务是一组不可分组的操作集合,这些操作要么都成功执行,要么都取消执行。最典型的需要事务的场景是银行账户间的转账:假如 A 账户要给 B 账户转账 100 元,那么 A 账户要扣减 100 元,B 账户要增加 100 元,这两个账户的数据变更都成功才可算作转账成功。更严格来说,可以用 ACID 四个特性表述事务:Atomicity:原子性,事务中的所有操作要么都成功执行,要么都取消执行,不能存在部分执行,部分不执行的状态。Consistency:一致性,举个例子简单的理解就是,A、B 两个账户各有
2020-07-05 20:31:20 308 1
转载 Java之ThreadLocal
ThreadLocal是什么首先说明,ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。ThreadLocal类提供了一种线程局部变量(ThreadLocal),即每一个线程都会保存一份变量副本,每个线程都可以独立地修改自己的变量副本,而不会影响到其他线程,是一种线程隔离的思想。实现原理ThreadLocal提供四个方法:public T get() { }public void set(T value
2020-07-04 19:17:06 1888 1
转载 线程池里面到底该设置多少个线程
一、抛出问题关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:第一派:《Java Concurrency in Practice》即《java并发编程实践》,如下图:如上图,在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式:Nthreads=NcpuUcpu(1+w/c),其中Ncpu=CPU核心数Ucpu=cpu使用率,0~1W/C=等待时间与计算时间的比率第二派:《Programming C
2020-07-04 17:19:43 712
转载 过滤器与拦截器
背景做过 JavaWeb 开发的对过滤器和拦截器肯定不会陌生,而且也会熟练的使用,但是关于过滤器和拦截器具体的区别和差异可能不是特别的了解,这篇文章就跟大家介绍下过滤器和拦截器的区别。过滤器 Filter首先介绍下什么是过滤器,过滤器英文叫 Filter,是 JavaEE 的标准,依赖于 Servlet 容器,使用的时候是配置在 web.xml 文件中的,可以配置多个,执行的顺序是根据配置顺序从上到下。常用来配置请求编码以及过滤一些非法参数,垃圾信息或者是网站登录验证码。 <!-- filte
2020-07-04 14:02:06 223
转载 @ConditionalOn相关注解
当我们构建一个 Spring 应用的时候,有时我们想在满足指定条件的时候才将某个 bean 加载到应用上下文中, 在Spring 4.0 时代,我们可以通过 @Conditional 注解来实现这类操作我们看到 @Conditional 注解接收的参数是 extends Condition 接口的泛型类,也就是说,我们要使用 @Conditional 注解,只需要实现 Condition 接口并重写其方法即可:看到接口的 matches 方法返回的是 boolean 类型,是不是和我们自定义 va
2020-07-04 13:57:00 5998 1
转载 Spring中的@Qualifier注解
本文将带你来了解一下Spring中的@Qualifier注解,它解决了哪些问题,以及如何使用它。我们还将了解它与@Primary注解的不同之处。使用@Autowired注解是Spring依赖注入的绝好方法。但是有些场景下仅仅靠这个注解不足以让Spring知道到底要注入哪个bean。默认情况下,@Autowired按类型装配Spring bean。如果容器中有多个相同类型的bean,则框架将抛出NoUniqueBeanDefinitionException, 以提示有多个满足条件的bean进行自动装配。程
2020-07-04 11:45:45 2458 1
转载 Spring 循环依赖的坑
前言这两天工作遇到了一个挺有意思的Spring循环依赖的问题,但是这个和以往遇到的循环依赖问题都不太一样,隐藏的相当隐蔽,网络上也很少看到有其他人遇到类似的问题。这里权且称他非典型Spring循环依赖问题。但是我相信我肯定不是第一个踩这个坑的,也一定不是最后一个,可能只是因为踩过的人比较少、鲜有记录罢了。因此这里权且记录一下这个坑,方便后人查看。典型场景经常听很多人在Review别人代码的时候有如下的评论:“你在设计的时候这些类之间怎么能有循环依赖呢?你这样会报错的!”。其实这句话前半句当然没有错
2020-07-04 11:25:46 411
转载 Spring事务失效的原因
1. 数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。2. 没有被 Sp
2020-07-04 11:06:11 191
转载 Spring 事务的原理
Spring事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回滚事务 con.commit() / con.rollback();关闭连接 conn.close();使
2020-07-02 22:34:18 429
转载 Spring 为啥默认把bean设计成单例的
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton、prototype、request、session、global session。如下图是官方文档上的截图,感兴趣的朋友可以进去看看这五种分别有什么不同。今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 prototype。Spring官方文档介绍如下图:更多内容可以看官方文档介绍,非常详细:https://docs.spring.io/spring/d
2020-07-02 21:56:56 203
Java集合、JVM面试题
2024-02-22
Java基础常见面试题
2024-02-22
Java并发编程最全面试题
2024-02-22
Java 工程师成神之路
2024-02-22
Git基础知识及面试题
2024-02-22
ElasticSearch面试题
2024-02-22
Dubbo知识及面试题
2024-02-22
BIO,NIO,AIO,Netty面试题
2024-02-22
300页的Java核心面试知识整理(带答案,超全)
2024-02-22
Java并发编程学些手册
2024-01-31
Java集合框架面试必备八股文
2024-01-30
Java JVM面试必备八股文
2024-01-30
MySQL面试题必备八股文
2024-01-30
Java并发编程面试题八股文
2024-01-30
Spring面试必备八股文
2024-01-30
RocketMQ面试必须会的八股文
2024-01-30
Java最新面试题详解
2024-01-30
Redis必备基础知识
2024-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人