展开

关键词

SQL性能

WHERE column1 = -column2 3 还是可以带来查询性能的优化的。 针对专门操作符的 前面,讲的是关于查询条件的一般规则,在这一节中,将讨论如何使用专门的操作符来改进 SQL 代码的性能。 当一些优化器发现查询中存在 OR 操作符时,就不使用索引查询,所以在这种情况下,并且只有在这种情况下,UNION 才比 OR 性能更高。 以上是作者对如何提高 SQL 性能的一些总结,这些规则并一定在所有的数据库系统上都能带来性能的提高,但是它们一定不会对数据库的性能带来下降,所以掌握并使用这些规则可以对数据库 应用程序的开发有所帮助。 本文总结的是一些 SQL 性能的比较初级的方面,SQL 还包括 Order by,Group by 以及 Index 等等。

18330

Tomcat 性能之 JVM

因此在对Web 容器( 应用服务器) 的中必不可少的是对于 JVM 的。 对于 JVM 的,主要有两个方面考虑: 内存大小配置 垃圾回收算法选择 当然,确切的说,以上两点并不互相独立,内存的大小配置也会影响垃圾回收的执行效率。 延迟、吞吐量 其他 JVM 配置 垃圾回收算法对应到的就是不同的垃圾收集器,具体到在 JVM 中的配置,是使用 -XX:+UseParallelOldGC 或者 -XX:+UseConcMarkSweepGC 所谓,就是一个不断调整和优化的过程,需要观察、配置、测试再如此重复。有相关经验的朋友欢迎留言补充! 说到底,那上面的这些选项是要配置在哪里呢?

45730
  • 广告
    关闭

    老用户专属续费福利

    云服务器CVM、轻量应用服务器1.5折续费券等您来抽!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spark 性能之开发

    如果没有对Spark作业进行合理的,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来。因此,想要用好Spark,就必须对其进行合理的性能优化。 Spark的性能实际上是由很多部分组成的,不是调节几个参数就可以立竿见影提升作业性能的。 笔者根据之前的Spark作业开发经验以及实践积累,总结出了一套Spark作业的性能优化方案。整套方案主要分为开发、资源、数据倾斜、shuffle几个部分。 开发和资源是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜,主要讲解了一套完整的用来解决Spark作业数据倾斜的解决方案;shuffle,面向的是对 本文作为Spark性能优化指南的基础篇,主要讲解开发。 2. 开发 2.1 概述 Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则。

    18231

    Spark 性能之Shuffle

    概述 大多数 Spark 作业的性能主要就是消耗在了 shuffle 环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。 因此,如果要让作业的性能更上一层楼,就有必要对 shuffle 过程进行。 但是也必须提醒大家的是,影响一个 Spark 作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle 只能在整个 Spark 的性能中占到一小部分而已。 建议:如果作业可用的内存资源较为充足的话,可以适当增加这个参数的大小(比如96m),从而减少拉取数据的次数,也就可以减少网络传输的次数,进而提升性能。 ,建议参考后面的几个参数,通过 bypass 机制或优化的 HashShuffleManager 来避免排序操作,同时提供较好的磁盘读写性能

    32730

    Spark 性能之资源

    Spark的性能实际上是由很多部分组成的,不是调节几个参数就可以立竿见影提升作业性能的。 笔者根据之前的Spark作业开发经验以及实践积累,总结出了一套Spark作业的性能优化方案。整套方案主要分为开发、资源、数据倾斜、shuffle几个部分。 开发和资源是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜,主要讲解了一套完整的用来解决Spark作业数据倾斜的解决方案;shuffle,面向的是对 本文作为Spark性能优化指南的基础篇,主要讲解资源。 2. 资源 2.1 概述 在开发完Spark作业之后,就该为作业配置合适的资源了。 这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。 参数建议:Spark作业的默认task数量为500-1000个较为合适。

    63030

    Spark性能01-资源

    理解作业基本原理,是我们进行资源参数的基本前提。 3. spark内存管理 (1) spark-1.5.x版本以前使用静态内存管理 ? Executor内存的大小,很多时候直接决定了Spark作业的性能,而且跟常见的JVM OOM异常,也有直接的关联。 参数建议: 每个Executor进程的内存设置4G~8G较为合适。 参数建议: Executor的CPU core数量设置为2~4个较为合适。 参数建议: Driver的内存通常来说不设置,或者设置1G左右应该就够了。 这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。 参数建议: Spark作业的默认task数量为500~1000个较为合适。

    38220

    Spark性能06-JVM

    Spark 和 JVM 的关系 再JVM虚拟机中,当创建的对象的数量很多时,Eden 和 Survior1 区域会很快的满溢,就需要进行频繁地 Minor GC,这样会导致有一些生命周期较短的对象迅速长到 Spark的JVM spark.storage.memoryFraction 参数说明: 该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6。 根据你选择的不同的持久化策略,如果内存不够时,可能数据就不会持久化,或者数据会写入磁盘 参数建议: 如果Spark作业中,有较多的RDD持久化操作,该参数的值可以适当提高一些,保证持久化的数据能够容纳在内存中 shuffle操作在进行聚合时,如果发现使用的内存超出了这个20%的限制,那么多余的数据就会溢写到磁盘文件中去,此时就会极大地降低性能 参数建议: 如果Spark作业中的RDD持久化操作较少,shuffle 操作数量、RDD持久化操作数量以及spark web ui中显示的作业gc情况)来灵活的 4.

    43110

    java性能

    以下部分内容整理自《分布式Java应用:原理与实践》——林昊 随着系统自身数据量的增长,访问量增加,系统的响应通常会越来越慢,或者是新的功能在性能上无法满足修去,这个时候需要对系统进行性能是一个复杂的过程,涉及的方面有:硬件,操作系统,运行环境软件和应用本身。 步骤: ? 前,首先要做的是衡量系统现状,这也是判断结果的依据。 在设定了目标后,要做的就是寻找性能瓶颈,这一步通常是最难的,可以结合一些工具来找出造成瓶颈点的代码。 找到瓶颈点代码后,通常要分析其需求场景结合一些优化技巧,制定优化策略。 找到系统性能瓶颈后,接下来就是了。可以从硬件、操作系统、JVM和程序四个方面着手。硬件和操作系统的可以参考计算机系统等相关书籍,接下来主要探讨的是JVM和程序方面的。 JVM JVM主要是内存管理方面你的,包括各个代大小,GC策略等。由于GC会影响应用线程,严重影响性能,这些对于应用而言还是很重要的。

    44020

    SQL 性能

    )和Select Count(1) 区别 (36) IS NULL 与 IS NOT NULL (37) 联接列 (38)Order by语句 (39) NOT 我们要做到不但会写SQL,还要做到写出性能优良的 (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML) 回到顶部 (10)尽量多使用COMMIT 只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为 性能上的差异,关键看你的from和where子句。比如说如果你的where条件中可以通过索引,那显然 select 1 from ... 的性能比 select * from ... 好。 也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 仔细检查order by语句以找出非索引项或者表达式,它们会降低性能

    33310

    JVM性能

    1、JVM目标:使用较小的内存占用来获得较高的吞吐量或者较低的延迟。 cpu load过高、请求延迟、tps降低等,甚至出现内存泄漏(每次垃圾收集使用的时间越来越长,垃圾收集频率越来越高,每次垃圾收集清理掉的垃圾数据越来越少)、内存溢出导致系统崩溃,因此需要对JVM进行 当然,和CAP原则一样,同时满足一个程序内存占用小、延迟低、高吞吐量是不可能的,程序的目标不同,时所考虑的方向也不同,在之前,必须要结合实际场景,有明确的的优化目标,找到性能瓶颈,对瓶颈有针对性的优化 ,最后进行测试,通过各种监控工具确认后的结果是否符合目标。 2、JVM工具 (1)可以依赖、参考的数据有系统运行日志、堆栈错误信息、gc日志、线程快照、堆转储快照等。

    7320

    hadoop性能

    尽量使key的WritableComparable性能最佳, 尽量使value的Writable性能最佳. 比如使用掩码操作. 十七. 尽早丢弃无关对象.

    42090

    性能思路

    步骤:衡量系统现状、设定调目标、寻找性能瓶颈、性能、衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈)、性能结束。 JVM 最关键参数为:-Xms -Xmx -Xmn -XX:SurvivorRatio -XX:MaxTenuringThreshold 代大小调 避免新生代大小设置过小、避免新生代大小设置过大 方案:增加Thread.sleep,以释放CPU 的执行权,降低CPU 的消耗。以损失单次执行性能为代价的,但由于其降低了CPU 的消耗,对于多线程的应用而言,反而提高了总体的平均性能方案:将线程数降低 这种过后有可能会造成CPU us过高,所以合理设置线程数非常关键。 总结 好的策略是收益比(后提升的效果/改动所需付出的代价)最高的,通常来说简单的系统比较好做,因此尽量保持单机上应用的纯粹性, 这是大型系统的基本架构原则。

    48360

    tomcat 性能

    acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理       maxthread太多,导致切换过多,性能下降严重

    52390

    MySQL性能

    后端程序员在面试中,经常会被问到SQL的操作,于是我也是去补习了一下这方面的知识,感谢各方大佬提供的点子,这里总结如下。 3- 通常来说,把可以为NULL的列改为NOT NULL不会对性能提升有多少帮助,只是如果计划在列上创建索引,就应该将该列设置为NOT NULL。 因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。当然这对于INT这类型字段属性来讲就画蛇添足了。

    9710

    Tomcat性能

    由于Web应用程序跑在Tomcat工作线程,因此Web应用对请求的处理时间也直接影响Tomcat性能,而Tomcat和Web应用在运行过程中所用到的资源都来自os,因此需要将服务端看作是一个整体来考虑 I/O指选择NIO、NIO.2还是APR 线程池指的是给Tomcat的线程池设置合适的参数,使得Tomcat能够又快又好地处理请求 I/O模型 I/O实际上是连接器类型的选择,一般情况下默认都是 APR 除非你的Web应用用到了TLS加密传输,而且对性能要求极高,这个时候可以考虑APR,因为APR通过OpenSSL来处理TLS握手和加/解密。 线程池 跟I/O模型紧密相关的是线程池,线程池的就是设置合理的线程池参数。 很多时候是在找系统瓶颈 假如有个状况:系统响应比较慢,但CPU的用率不高,内存有所增加,通过分析Heap Dump发现大量请求堆积在线程池的队列中,请问这种情况下应该怎么办呢?

    12810

    Java性能

    A:因为年轻代的内存无法被回收,越来越多地被Copy到年老代 三、性能  除了上述内存泄漏外,我们还发现CPU长期不足3%,系统吞吐量不够,针对8core×16G、64bit的Linux服务器来说 在CPU负载不足的同时,偶尔会有用户反映请求的时间过长,我们意识到必须对程序及JVM进行。 3.JVM参数     在JVM启动参数中,可以设置跟内存、垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细才能获得最佳性能。 这个我问题毫无疑问是没有答案的,否则也就不会有。 4.程序算法:本次不作为重点 参考资料

    526110

    Spark性能

    一定要在action操作之后; 2、Spark项目开发流程:    数据调研 --> 需求分析 --> 技术方案设计 --> 数据库设计 --> 编码实现 --> 单元测试 --> 本地测试 --> 性能 --> Troubshoting --> 数据倾斜解决 3、常规性能: 3.1、分配更多资源    性能和速度的提升在一定范围内和运算资源成正比 (1)分配哪些资源? sparkConf.set("spark.locality.wait","10") spark.locality.node spark.locality.wait.rack 4、JVM 大大延长了作业时长;   可以通过参数调节等待时长,从而避免文件拉取失败: --conf spark.core.connection.ack.wait.timeout = 300 ; 5、Shuffle 将会导致多次磁盘写操作,如果reduce端内存不够用,也可能会导致频繁的spill;   (3)查看Spark UI,如果每个task的shuffle write和shuffle read很大,则可以考虑进行相应

    34520

    Nginx 性能

    原文地址:http://nginx.com/blog/tuning-nginx/ Tuning NGINX for Performance Nginx 性能 NGINX is well known 一个很好的原则是时每次只修改一个配置,如果对配置的修改不能提高性能的话,改回默认值。 我们将从Linux开始因为有些值会影响到你Nginx时用到的一些配置参数。 如果你高速率的接入并且你的性能配置不均衡,例如一些连接出现延时的情况,那么下面的配置将起到作用。 还有一些不是非要放到这个标题下的Nginx功能能够提高一个网站应用的性能,但是依然要提一下因为他们的影响是值得注意的。我们讨论这其中的两个功能。

    8720

    SQL 性能

    我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML) (10)尽量多使用COMMIT 只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为 性能上的差异,关键看你的from和where子句。比如说如果你的where条件中可以通过索引,那显然 select 1 from ... 的性能比 select * from ... 好。 也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 仔细检查order by语句以找出非索引项或者表达式,它们会降低性能

    46160

    Tomcat性能

    提高Tomcat性能一般从三方面入手,JVM内存调整、禁用DNS查询、调整线程数。 一、JVM内存调整   -Xms<size> 表示JVM初始化堆的大小,-Xmx<size>表示JVM堆的最大值。 为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值 enableLookups="false" 三、调整线程数   另外一个可通过应用程序的连接器 (Connector)进行性能控制的的参数是创建的处理请求的线程数。 注意事项: 设置NewSize、MaxNewSize相等,"new"的大小最好不要大于"old" 的一半,原因是old区如果不够大会频繁的触发主GC,大大降低了性能。 因为对于操作系统,请求内存的系统调用会占用大量的cpu时间,所以频繁的请求、释放内存将会导致性能的严重下降。

    1.3K21

    扫码关注腾讯云开发者

    领取腾讯云代金券