![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
性能优化
cwl_java
这个作者很懒,什么都没留下…
展开
-
性能优化-索引使用八大注意事项
5、索引使用八大注意事项设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有一下几点注意:1,创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又...原创 2020-01-16 09:31:40 · 446 阅读 · 0 评论 -
性能优化-索引优化SQL的方法
4、索引优化SQL的方法1、索引的维护及优化(重复及冗余索引)增加索引会有利于查询效率,但会降低insert,update,delete的效率,但实际上往往不是这样的,过多的索引会不但会影响使用效率,同时会影响查询效率,这是由于数据库进行查询分析时,首先要选择使用哪一个索引进行查询,如果索引过多,分析过程就会越慢,这样同样的减少查询的效率,因此我们要知道如何增加,有时候要知道维护和删除不需要的...原创 2020-01-16 09:24:42 · 449 阅读 · 0 评论 -
性能优化-如何选择合适的列建立索引
3、如何选择合适的列建立索引1、在where从句,group by从句,order by从句,on从句中的列添加索引2、索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,IO也会越大)3、离散度大的列放到联合索引的前面例子:select * from payment where staff_id =2 and customer_id =584;注意:是ind...原创 2020-01-16 09:13:16 · 490 阅读 · 0 评论 -
性能优化-什么情况下,使用索引了
6、索引的优化1、什么是索引?索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。索引的建立是表中比较有指向性的字段,相当于目录,比如说行政区域代码,同一个地域的行政区域代码都是相同的,那么给这一列...原创 2020-01-15 18:01:00 · 1893 阅读 · 0 评论 -
性能优化-Limit查询的优化
5、Limit查询的优化Limit常用于分页处理,时长会伴随order by从句使用,因此大多时候回使用Filesorts这样会造成大量的IO问题。例子:需求:查询影片id和描述信息,并根据主题进行排序,取出从序号50条开始的5条数据。select film_id,description from sakila.film order by title limit 50,5;执行的结果:...原创 2020-01-15 17:55:20 · 596 阅读 · 0 评论 -
性能优化-group by的优化
4、group by的优化最好使用同一表中的列,需求:每个演员所参演影片的数量-(影片表和演员表)explain select actor.first_name,actor.last_name,count(*)from sakila.film_actorinner join sakila.actor using(actor_id)group by film_actor.actor_id...原创 2020-01-15 17:39:35 · 2397 阅读 · 0 评论 -
性能优化-子查询的优化
3、子查询的优化子查询是我们在开发过程中经常使用的一种方式,在通常情况下,需要把子查询优化为join查询但在优化是需要注意关联键是否有一对多的关系,要注意重复数据。查看我们所创建的t表show create table t;接下来我们创建一个t1表create table t1(tid int);并插入一条数据我们要进行一个子查询,需求:查询t表中id在t1表中tid的所有数...原创 2020-01-15 17:34:21 · 743 阅读 · 0 评论 -
性能优化-慢查询的优化案例
3、慢查询的优化案例1、函数Max()的优化用途:查询最后支付时间-优化max()函数语句:select max(payment_date) from payment;执行计划:explain select max(payment_date) from payment;可以看到显示的执行计划,并不是很高效,可以拖慢服务器的效率,如何优化了?创建索引create inde...原创 2020-01-15 17:24:50 · 538 阅读 · 0 评论 -
性能优化-通过explain查询分析SQL的执行计划
7、通过explain查询分析SQL的执行计划1、使用explain查询SQL的执行计划SQL的执行计划侧面反映出了SQL的执行效率,具体执行方式如下所示:在执行的SQL前面加上explain关键词即可;2、每个字段的说明:1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。2)、select_type...原创 2020-01-15 17:17:46 · 433 阅读 · 0 评论 -
性能优化-MySQL慢查日志分析工具(mysqldumpslow)
6、如何通过慢查日志发现有问题的SQL1、查询次数多且每次查询占用时间长的sql通常为pt-query-digest分析的前几个查询;该工具可以很清楚的看出每个SQL执行的次数及百分比等信息,执行的次数多,占比比较大的SQL2、IO大的sql注意pt-query-digest分析中的Rows examine项。扫描的行数越多,IO越大。3、未命中的索引的SQL注意pt-query-di...原创 2020-01-15 17:12:29 · 345 阅读 · 0 评论 -
性能优化-MySQL慢查日志分析工具(pt-query-digest)
5、MySQL慢查日志分析工具(pt-query-digest)1、介绍及作用作为一名优秀的mysql dba也需要有掌握几个好用的mysql管理工具,所以我也一直在整理和查找一些能够便于管理mysql的利器。以后的一段时间内,将会花一大部分的精力去搜索这些工具。性能的管理一直都是摆在第一位的,dba的很多工作管理层都看不到也没有办法衡量价值,但是如果一个系统慢的跟蜗牛一样,dba通过监控...原创 2020-01-15 17:09:31 · 2527 阅读 · 0 评论 -
性能优化-MySQL慢查日志分析工具(mysqldumpslow)
4、MySQL慢查日志分析工具(mysqldumpslow)1、介绍如何进行查看慢查询日志,如果开启了慢查询日志,就会生成很多的数据,然后我们就可以通过对日志的分析,生成分析报表,然后通过报表进行优化。2、用法接下来我们查看一下这个工具的用法:注意:在mysql数据库所在的服务器上,而不是在mysql>命令行中该工具如何使用:mysqldumpslow -h查看verbose...原创 2020-01-15 17:00:57 · 538 阅读 · 0 评论 -
性能优化-MySQL慢查日志的存储格式
3、MySQL慢查日志的存储格式如下图所示:说明:1、# Time: 180526 1:06:54 -------查询的执行时间2、# User@Host: root[root] @ localhost [] Id: 4 -------执行sql的主机信息3、# Query_time: 0.000401 Lock_time: 0.000105 Rows_sent: 2 ...原创 2020-01-15 16:57:34 · 510 阅读 · 0 评论 -
性能优化-SQL及索引优化
3、SQL及索引优化1、mysql安装与卸载(linux在线安装与卸载)2、数据库版本选择1、查看数据库的版本2、准备数据网址:https://dev.mysql.com/doc/sakila/en/sakila-installation.htmlsakila-db.zip压缩包所包含的文件如下解释加载数据步骤如下图所示3、表结构关系注:该表结构关系是用工具生...原创 2020-01-15 16:55:27 · 362 阅读 · 0 评论 -
性能优化-MySQL数据库优化
2、mysql数据库优化可以从哪几个方面进行数据库的优化?如下图所示:A、SQL及索引优化根据需求写出良好的SQL,并创建有效的索引,实现某一种需求可以多种写法,这时候我们就要选择一种效率最高的写法。这个时候就要了解sql优化B、数据库表结构优化根据数据库的范式,设计表结构,表结构设计的好直接关系到写SQL语句。C、系统配置优化大多数运行在Linux机器上,如tcp连接数的限制、打...原创 2020-01-15 16:48:18 · 328 阅读 · 0 评论 -
性能优化-MySQL性能优化参数
mysql的监控方法大致分为两类:连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标。直接使用mysqladmin查看其性能指标,例如:UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"m...原创 2020-01-15 16:41:46 · 515 阅读 · 0 评论 -
性能优化-MySQL性能优化常用命令
网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的”状态”进行优化。 mysql> show global status; 可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: ...原创 2020-01-15 16:00:36 · 425 阅读 · 0 评论 -
性能优化-15条必须记住的代码优化定律
3、代码优化优化,不仅仅是在运行环境进行优化,还需要在代码本身做优化,如果代码本身存在性 能问题,那么在其他方面再怎么优化也不可能达到效果最优的。3.1、尽可能使用局部变量调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变 量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随 着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。3.2、...原创 2020-01-15 15:55:05 · 469 阅读 · 0 评论 -
性能优化-JVM字节码
2、JVM字节码前面我们通过tomcat本身的参数以及jvm的参数对tomcat做了优化,其实要想将应用程 序跑的更快、效率更高,除了对tomcat容器以及jvm优化外,应用程序代码本身如果写的效率不高的,那么也是不行的,所以,对于程序本身的优化也就很重要了。对于程序本身的优化,可以借鉴很多前辈们的经验,但是有些时候,在从源码角度方面 分析的话,不好鉴别出哪个效率高,如对字符串拼接的操作,是...原创 2020-01-15 15:45:55 · 546 阅读 · 0 评论 -
性能优化-Tomcat8优化
1、Tomcat8优化tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了。对于tomcat的优化,主要是从2个方面入手,一是,tomcat自身的配置,另一个是tomcat所运行的jvm虚拟机的调优。下面我们将从这2个方面进行讲解。1.1 Tomcat配置优化1.1.1、部署安装tomcat8下载并安装:https://tomcat...原创 2020-01-15 15:07:48 · 446 阅读 · 0 评论 -
性能优化-可视化GC日志分析工具
4、可视化GC日志分析工具4.1、GC日志输出参数前面通过-XX:+PrintGCDetails可以对GC日志进行打印,我们就可以在控制台查看,这样虽然可以查看GC的信息,但是并不直观,可以借助于第三方的GC日志分析工具进行查 看。在日志打印输出涉及到的参数如下:‐XX:+PrintGC 输出GC日志‐XX:+PrintGCDetails 输出GC的详细日志‐XX:+PrintGCTi...原创 2020-01-15 14:36:14 · 784 阅读 · 0 评论 -
性能优化-垃圾收集器以及内存分配
3、垃圾收集器以及内存分配前面我们讲了垃圾回收的算法,还需要有具体的实现,在jvm中,实现了多种垃圾收集 器,包括:串行垃圾收集器、并行垃圾收集器、CMS(并发)垃圾收集器、G1垃圾收集器,接下来,我们一个个的了解学习。3.1、串行垃圾收集器串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作, 并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为S...原创 2020-01-15 14:31:27 · 610 阅读 · 0 评论 -
性能优化-垃圾回收的常见算法
2、垃圾回收的常见算法自动化的管理内存资源,垃圾回收机制必须要有一套算法来进行计算,哪些是有效的对 象,哪些是无效的对象,对于无效的对象就要进行回收处理。常见的垃圾回收算法有:引用计数法、标记清除法、标记压缩法、复制算法、分代算法 等。2.1、引用计数法引用计数是历史最悠久的一种算法,最早George E. Collins在1960的时候首次提出,50年后的今天,该算法依然被很多编程语言使...原创 2020-01-15 14:06:57 · 341 阅读 · 0 评论 -
性能优化-JAVA的垃圾回收与C/C++的垃圾回收
1、什么是垃圾回收?程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存 资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了。1.1、C/C++语言的垃圾回收在C/C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete 关键字释放内存资源。如果,程序员在某些位置没有写delete进行释放,那么申请的对象将一直占用内存资源, ...原创 2020-01-15 13:55:00 · 634 阅读 · 0 评论 -
性能优化-JVM常用指令
JVM常用指令~~~shell指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型-1推送至栈顶 0x03 iconst_0 将int型0推送至栈顶 0x04 iconst_1 将int型1推送至栈顶 0x05 iconst_2 将int型2推送至栈顶 0x06 iconst_3 将i...原创 2020-01-15 11:44:26 · 355 阅读 · 0 评论 -
性能优化-VisualVM工具的使用
7、VisualVM工具的使用VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。内存信息线程信息Dump堆(本地进程)Dump线程(本地进程)打开堆Dump。堆Du...原创 2020-01-15 11:40:08 · 549 阅读 · 0 评论 -
性能优化-jstack的使用
6、jstack的使用有些时候我们需要查看下jvm中的线程执行情况,比如,发现服务器的CPU的负载突然增高了、出现了死锁、死循环等,我们该如何分析呢?由于程序是正常运行的,没有任何的输出,从日志方面也看不出什么问题,所以就需要 看下jvm的内部线程的执行情况,然后再进行分析查找出原因。这个时候,就需要借助于jstack命令了,jstack的作用是将正在运行的jvm的线程情况进 行快照,并且打...原创 2020-01-15 11:30:52 · 554 阅读 · 0 评论 -
性能优化-实战:内存溢出的定位与分析
5、实战:内存溢出的定位与分析内存溢出在实际的生产环境中经常会遇到,比如,不断的将数据写入到一个集合中,出现了死循环,读取超大的文件等等,都可能会造成内存溢出。如果出现了内存溢出,首先我们需要定位到发生内存溢出的环节,并且进行分析,是正常还是非正常情况,如果是正常的需求,就应该考虑加大内存的设置,如果是非正常需求,那么就要对代码进行修改,修复这个bug。首先,我们得先学会如何定位问题,然后再...原创 2020-01-15 10:37:32 · 711 阅读 · 0 评论 -
性能优化-jmap的使用以及内存溢出分析
4、jmap的使用以及内存溢出分析前面通过jstat可以对jvm堆的内存进行统计分析,而jmap可以获取到更加详细的内容, 如:内存使用情况的汇总、对内存溢出的定位与分析。4.1、查看内存使用情况[root@node01 ~]# jmap ‐heap 6219Attaching to process ID 6219, please wait... Debugger attached s...原创 2020-01-15 10:31:06 · 2148 阅读 · 0 评论 -
性能优化-jvm的内存模型
3、jvm的内存模型jvm的内存模型在1.7和1.8有较大的区别,虽然本套课程是以1.8为例进行讲解,但是我们 也是需要对1.7的内存模型有所了解,所以接下里,我们将先学习1.7再学习1.8的内存模型。3.1、jdk1.7的堆内存模型Young 年轻区(代)Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区,其中, Survivor区间中,某一时刻只有其...原创 2020-01-15 10:12:15 · 323 阅读 · 0 评论 -
性能优化-jvm的运行参数
2、jvm的运行参数在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。2.1、三种参数类型jvm的参数类型分为三类,分别是:标准参数-help-version-X参数 (非标准参数)-Xint-Xcomp-XX参数(使用率较高)-XX:newSize-XX:+UseSerialGC2.2、标...原创 2020-01-15 09:42:06 · 696 阅读 · 0 评论 -
性能优化-测试If-Else和if哪个性能更好
代码示例package com.cwl.po.judge;/** * @program: cwl-performance-optimization * @description: 测试If-Else和if哪个性能更好 * @author: ChenWenLong * @create: 2019-11-27 11:23 **/public class TestIfAndIfElse...原创 2019-11-27 18:00:21 · 2971 阅读 · 2 评论 -
性能优化-测试If和If-Else的性能
代码示例package com.cwl.po.judge;/** * @program: cwl-performance-optimization * @description: 测试If和If-Else的性能 * @author: ChenWenLong * @create: 2019-11-27 10:34 **/public class TestIfElse { ...原创 2019-11-27 10:43:02 · 1522 阅读 · 0 评论 -
性能优化-测试for循环中的反射操作
代码示例package com.cwl.po;import org.springframework.beans.BeanUtils;/** * @program: cwl-performance-optimization * @description: 测试for循环中的反射操作 * @author: ChenWenLong * @create: 2019-11-22 14:00...原创 2019-11-24 08:36:43 · 576 阅读 · 0 评论 -
性能优化-多层嵌套for循环如何优化
代码示例package com.cwl.po;/** * @program: cwl-performance-optimization * @description: 测试for循环-嵌套循环 * @author: ChenWenLong * @create: 2019-11-22 11:27 **/public class TestNestedLoop { // 当需...原创 2019-11-23 14:25:14 · 5922 阅读 · 0 评论 -
性能优化-测试Contiue是否能对For循环起到的优化作用
代码示例package com.cwl.po;import java.util.ArrayList;import java.util.List;/** * @program: cwl-performance-optimization * @description: 测试Contiue是否能对For循环起到的优化作用 * @author: ChenWenLong * @creat...原创 2019-11-23 14:23:08 · 418 阅读 · 0 评论 -
性能优化-测试Break能否对For循环起到优化作用
代码示例package com.cwl.po;/** * @program: cwl-performance-optimization * @description: 测试Break能否对For循环起到优化作用 * @author: ChenWenLong * @create: 2019-11-22 11:55 **/public class TestBreakLoop { ...原创 2019-11-23 14:22:21 · 477 阅读 · 0 评论