性能优化

MySQL性能优化 分区

送分小仙女□ 提交于 2019-11-30 14:57:47
简述 分区是指根据一定的虽则,数据库将表分解为多个更小的,更容易管理的部分,就访问数据库而言,逻辑上只有一张表或一个索引,但实际上这张表可能又多个物理分区共同构成,每一个分区都是一个独立的对象,可以独自处理,也可以作为表的一部分进行处理,分区对应用来说是完全透明的,不影响应用的业务逻辑。 MySQL采用分区的优点: 1.和单个磁盘或单个文件系统比较,可以 存储更多的数据 。 2. 优化查询 ,采用‘分而治之’的思想,例如在 where 子句中包含分区条件时,可以只扫描必要的一个或几个分区,避免全表扫描带来的性能缺失。此外,在使用 SUM 和 COUNT 等聚合函数时,可以采用归并的思想,只需汇总每一个分区的查询结果来提高效率。 3.对于过期或垃圾数据的清除,可以通过删除特定分区来减少查询。 特别注意: 1.大部分存储引擎( InnoDB , MyISAM , Memory 等)均支持分区, MERGE 和 CSV 不支持分区; 2.可以使用 SHOW VARIABLES LIKE '%partition%' (版本在5.6以下,5.6以上使用 SHOW PLUGINS )来查看当前版本的MySQL是否支持分区; 3.同一个分区表必须使用同一个存储引擎,但是对同一个MySQL服务器中,同一个数据库中对不同分区表使用不同的存储引擎; 4.MySQL分区适用于一个表的所有数据和索引

JVM故障分析及性能优化系列之二:jstack生成的Thread Dump日志结构解析

跟風遠走 提交于 2019-11-30 12:01:43
转载 来源:爪哇堂 原文: https://www.javatang.com/archives/2017/10/19/51301886.html 作者: 这篇文章首先对Thread Dump日志文件的结构进行分析。 一个典型的thread dump文件主要由一下几个部分组成: 上图将JVM上的线程堆栈信息和线程信息做了详细的拆解。 第一部分:Full thread dump identifier 这一部分是内容最开始的部分,展示了快照文件的生成时间和JVM的版本信息。 2017 - 10 - 19 10 : 46 : 44 Full thread dump Java HotSpot ( TM ) 64 - Bit Server VM ( 24.79 - b02 mixed mode ) : 第二部分:Java EE middleware, third party & custom application Threads 这是整个文件的核心部分,里面展示了JavaEE容器(如tomcat、resin等)、自己的程序中所使用的线程信息。这一部分详细的含义见 Java内存泄漏分析系列之四:jstack生成的Thread Dump日志线程状态分析。 "resin-22129" daemon prio=10 tid=0x00007fbe5c34e000 nid=0x4cb1 waiting

Android进阶系列之性能优化篇-(内存优化)

徘徊边缘 提交于 2019-11-30 10:35:54
Android中,应用的性能优化是一个比较重要的问题,应用性能直接影响到用户的体验,应用的流畅度,崩溃率,流量使用量,耗电量,以及启动的快慢,内存使用等,都会严重影响用户的使用。 而内存优化更是Android应用性能优化中的重要部分,这篇文章就来记录总结一下Android应用的内存优化 首先先来了解一下两个概念: 内存泄漏 :由于某种原因,导致程序中动态分配的堆内存,无法被释放,导致系统内存的浪费。 主要表现为长生命周期对象持有短生命周期对象引用,从而导致短生命周期对象无 法被回收。 内存抖动 :程序运行过程中,频繁的创建和销毁对象,导致频繁GC, 从而引起应用卡顿。 主要表现为在循环中创建对象,导致短时间内有大量的对象创建和回收, 如果严重的话,就会导致应用卡顿。 下面来总结一下Android中内存泄漏的场景以及对应的解决方案: 1.单例引起的内存泄漏 由于单例的静态特性,导致单例的生命周期和整个应用的生命周期一样长,如果对象不再被使用,但是被单例持有引用的话,那么这个对象就没有办法被系统回收,导致内存泄漏。 public class SingleInstance { private static SingleInstance mInstance; private Context mContext; private SingleInstance(Context context)

Linux性能优化实战:案例篇-服务器总是时不时丢包,我该怎么办?(下)(48)

断了今生、忘了曾经 提交于 2019-11-30 07:49:39
一、上节回顾 上一节,我们一起学习了如何分析网络丢包的问题,特别是从链路层、网络层以及传输层等主要的协议栈中进行分析。 不过,通过前面这几层的分析,我们还是没有找出最终的性能瓶颈。看来,还是要继续深挖才可以。今天,我们就来继续分析这个未果的案例。 在开始下面的内容前,你可以先回忆一下上节课的内容,并且自己动脑想一想,除了我们提到的链路层、网络层以及传输层之外,还有哪些潜在问题可能会导致丢包呢? 二、iptables 首先我们要知道,除了网络层和传输层的各种协议,iptables 和内核的连接跟踪机制也可能会导致丢包。所以,这也是发生丢包问题时,我们必须要排查的一个因素。 我们先来看看连接跟踪,我已经在 如何优化 NAT 性能 文章中,给你讲过连接跟踪的优化思路。要确认是不是连接跟踪导致的问题,其实只需要对比当前的连接跟踪数和最大连接跟踪数即可。 不过,由于连接跟踪在 Linux 内核中是全局的(不属于网络命名空间),我们需要退出容器终端,回到主机中来查看。 你可以在容器终端中,执行 exit ;然后执行下面的命令,查看连接跟踪数: # 容器终端中执行 exit root@nginx:/# exit exit # 主机终端中查询内核配置 $ sysctl net.netfilter.nf_conntrack_max net.netfilter.nf_conntrack_max =

JVM性能优化, Part 2 ―― 编译器

巧了我就是萌 提交于 2019-11-30 07:05:15
ImportNew注:本文是JVM性能优化 – 第2篇 《JVM性能优化, Part 2 ―― 编译器》第一篇 《JVM性能优化, Part 1 ―― JVM简介 》 作为JVM性能优化系列文章的第2篇,本文将着重介绍Java编译器,此外还将对JIT编译器常用的一些优化措施进行讨论(参见“JVM性能优化,Part 1″中对JVM的介绍)。Eva Andreasson将对不同种类的编译器做介绍,并比较客户端、服务器端和层次编译产生的编译结果在性能上的区别,此外将对通用的JVM优化做介绍,包括死代码剔除、内联以及循环优化。 Java编译器存在是Java编程语言能独立于平台的根本原因。软件开发者可以尽全力编写程序,然后由Java编译器将源代码编译为针对于特定平台的高效、可运行的代码。不同类型的编译器适合于不同应用程序的需求,使编译结果可以满足期望的性能要求。对编译器基本原理了解得越多,在优化Java应用程序性能时就越能得心应手。 什么是编译器 简单来说,编译器就是将一种编程语言作为输入,输出另一种可执行语言的工具。大家都熟悉的javac就是一个编译器,所有标准版的JDK中都带有这个工具。javac以Java源代码作为输入,将其翻译为可由JVM执行的字节码。翻译后的字节码存储在.class文件中,在启动Java进程的时候,被载入到Java运行时中。 标准CPU并不能识别字节码

前端性能优化

心已入冬 提交于 2019-11-30 05:49:28
性能优化: 广义上包含前端优化和后端优化。后端优化的关注点更多的时候是在增加资源利用率、降低资源成本以及提高稳定性上。相较于后端,前端的性能优化会更直接与用户的体验挂钩。从用户体验侧来说,前端服务 5s 的加载时间优化缩减 80%(1s) 与后端服务 50ms 的响应优化缩减 80%(10ms) 相比,用户的体验提升会更大。因此很多时候,与体验相关的性能的瓶颈会出现在前端。 一、html文档结构标签语义化 语义化是指用合理HTML标记以及其特有的属性去格式化文档内容。机器在需要更少的人类干预的情况下能够研究和收集信息,让网页能够被机器理解,最终让人类受益。即用正确的标签做正确的事。 语义化的好处或者说存在的意义 ① 有利于搜索引擎抓取 ② 结构清晰的HTML在团队合作中的作用:代码可读、便于维护、提高开发效率、快速达成共识、利于二次开发。 ③ 有利于盲人屏幕阅读器 二、css、js文件数量及大小 优化一般对于css、js是建议使用外联式来进行导入。我们可以对css、js做相应的规划也可以减少css、js的个数以减少http请求。同时也要注重减少重复代码,注重代码重复利用,以达到用最少的代码干最多的事。同时当项目要投入上线使用的时候,可以对css、js文件进行压缩,文件的减小可以加速文件的链接导入,以便加速网页的加载渲染。 可通过使用webpack,gulp等工具对Js文件进行合并。

Django查询数据库性能优化

旧街凉风 提交于 2019-11-30 05:42:38
现在有一张用户信息的数据表,表中记录了10个用户的姓名,昵称,年龄,工作等信息, models文件 from django.db import models class Job(models.Model): title=models.CharField(max_length=32) class UserInfo(models.Model): username=models.CharField(max_length=32) nickname=models.CharField(max_length=32) job=models.ForeignKey(to="Job",to_field="id",null=True)   数据表中记录   另外一张表中记录用户工作表,关联用户的工作字段   要查出每个用户的用户名,昵称和工作信息 def index(request): user_list=models.UserInfo.objects.all() print(user_list.query) # 打印查询时使用的语句 print(type(user_list)) # 打印查询结果的数据类型 for user in user_list: print("%s-->%s-->%s" %(user.username,user.nickname,user.job.title)) return

Spring Boot 性能优化

人走茶凉 提交于 2019-11-30 03:53:42
Spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题。但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代。Spring Boot 让我们创建和运行项目变得更为迅速,现在已经有越来越多的人使用它。我们已经在几个项目中使用了 Spring Boot ,今天我们就来一起讨论一下如何改进 Spring Boot 应用的性能。 首先,从之前我在开发中遇到的一个问题说起。在一次查看项目运行日志的时候,我偶然发现了一个问题,日志里显示这个项目总是加载 Velocity 模板引擎,但实际上这个项目是一个没有 web 页面的 REST Service 项目。于是我花了一点时间去寻找产生这个问题的原因,以及如何改进 Spring Boot 应用的性能。在查找了相关的资料后,我得出的结论如下: ##组件自动扫描带来的问题 默认情况下,我们会使用 @SpringBootApplication 注解来自动获取的应用的配置信息,但这样也会给应用带来一些副作用。使用这个注解后,会触发自动配置( auto-configuration )和 组件扫描 ( component scanning ),这跟使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan

前端性能优化

邮差的信 提交于 2019-11-30 00:09:00
转自: http://blog.itpub.net/69917606/viewspace-2643472/ 浏览器访问优化 减少 HTTP 请求 - HTTP 请求需要建立通信链路,进行数据传输,开销高昂,所以减少 HTTP 请求数可以有效提高访问性能。减少 HTTP 的主要手段是合并 Css、JavaScript、图片。 使用浏览器缓存 - 因为静态资源文件更新频率低,可以缓存浏览器中以提高性能。设置 HTTP 头中的 Cache-Control 和 Expires 属性,可以设定浏览器缓存。 启用压缩 - 在服务器端压缩静态资源文件,在浏览器端解压缩,可以有效减少传输的数据量。由于文本文件压缩率可达 80% 以上,所以可以对静态资源,如 Html、Css、JavaScrip 进行压缩。 CSS 放在页面最上面,JavaScript 放在页面最下面 - 浏览器会在下载完全部的 Css 后才对整个页面进行渲染,所以最好的做法是将 Css 放在页面最上面,让浏览器尽快下载 Css;JavaScript 则相反,浏览器加载 JavaScript 后立即执行,可能会阻塞整个页面,造成页面显示缓慢,因此 JavaScript 最好放在页面最下面。 减少 Cookie 传输 - Cookie 包含在 HTTP 每次的请求和响应中,太大的 Cookie 会严重影响数据传输。 2.2. CDN

前端性能优化

馋奶兔 提交于 2019-11-29 23:35:24
减少请求数量 https://segmentfault.com/a/1190000015990848 合并 合并js文件 合并css文件 合并法则 公共库合并 不同页面单独合并 图片处理 雪碧图 Base64 将图片的内容以Base64格式内嵌到HTML中,可以减少HTTP请求数量。但是,由于Base64编码用8位字符表示信息中的6个位,所以编码后大小大约比原始值扩大了 33% 使用字体图标代替图片 减少重定向 尽量避免使用重定向,当页面发生了 重定向,就会延迟整个HTML文档的传输 。在HTML文档到达之前,页面中不会呈现任何东西,也没有任何组件会被下载,降低了用户体验。 如果一定要使用重定向,如http重定向到https,要使用301永久重定向,而不是302临时重定向 。因为,如果使用302,则每一次访问http,都会被重定向到https的页面。而永久重定向,在第一次从http重定向到https之后 ,每次访问http,会直接返回https的页面 使用缓存 使用cach-control或expires这类强缓存时,缓存不过期的情况下,不向服务器发送请求。强缓存过期时,会使用last-modified或etag这类协商缓存,向服务器发送请求,如果资源没有变化,则服务器返回304响应,浏览器继续从本地缓存加载资源;如果资源更新了,则服务器将更新后的资源发送到浏览器,并返回200响应