17-MySQL DBA笔记-应用程序调优】的更多相关文章

第17章 应用程序调优 本章将主要讲述应用程序调优的一些方法和步骤,应用程序调优的领域很广,本章主要关注的是涉及数据库方面的调优. 在进行性能分析之前,我们先要熟悉应用的角色,它是什么版本的,做什么的,它是什么类型的应用,它是如何配置的,是否有相关的官方和社区支持,比如 Bug库.邮件组.我们了解的信息越全面,就越有助于我们进行诊断和调优. 17.1 程序访问调优 如果能够满足以下几个方面的要求,那么程序的访问调优会更顺利. 17.1.1 好的架构和程序逻辑 最好是能够通过架构层面尽量避免性能问…
----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调优经验 3.1 Spark原理及调优工具 3.2 运行环境优化 3.2.1 防止不必要的分发 3.2.2 提高数据本地性 3.2.3 存储格式选择 3.2.4 选择高配机器 3.3 优化操作符 3.3.1 过滤操作导致多小任务 3.3.2 降低单条记录开销 3.3.3 处理数据倾斜或者任务倾斜 3.…
MySQL慢查询查找和调优测试,接下来详细介绍,需要了解的朋友可以参考下.本文参考自:http://www.jbxue.com/db/4376.html  编辑 my.cnf或者my.ini文件,去除下面这几行代码的注释:  log_slow_queries = /var/log/mysql/mysql-slow.log  long_query_time = 2 log-queries-not-using-indexes  这将使得慢查询和没有使用索引的查询被记录下来. 这样做之后,对mysql…
Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/index.html Perf -- Linux下的系统性能调优工具,第 2 部分 特殊用法以及内核调优示例 https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/index.html…
原文链接: What to tune in MySQL 5.6 after installation原文日期: 2013年09月17日翻译日期: 2014年06月01日翻译人员: 铁锚 随着 大量默认选项的改进, MySQL 5.6比以前版本需要调优的选项大为减少. 在本文中我将讲述需要优化的配置项. InnoDB设置 innodb_buffer_pool_size  -- 默认值为 128M. 这是最主要的优化选项,因为它指定 InnoDB 使用多少内存来加载数据和索引(data+indexe…
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求.本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用.本文参考了网上很多资料,难以一一列举,在此对这些资料的…
背景: 笔者的源数据一张表大概7000多万条,数据大小36G,索引6G,加起来表空间有40G+,类似的表有4张,总计2亿多条 数据库mysql,引擎为innodb,版本5.7,服务器内存256G,物理内存几个T,硬件参数杠杠的,然而处理这些数据踩了不少坑,因 为之前没做过这方面的工作,现在记录下清洗的过程,详细的业务清洗过程和规则均记录在https://gitee.com/yanb618/zhirong/wikis 感受: 清洗从表名,字段名,字段类型,字段值,索引创建与删除做起,每每看到那秒数…
(转载自点击打开链接) MySQL运行状态及调优(一) 一.查看MySQL运行情况SHOW STATUS; 二.查看INNODB数据库引擎运行状态SHOW ENGINE INNODB STATUS; 三.查看当前正在进行的进程,对于有锁表等情况的排查很有用处 SHOW PROCESSLIST; 默认显示前100条 SHOW FULL PROCESSLIST; 显示所有 四.查看MySQL的配置参数 SHOW VARIABLES; 五.查看当前已经被打开的表列表 SHOW OPEN TABLES;…
在我们调优MySQL的SQL时候,通常使用三种工具进行查看sql执行的效率,explain.profile.optimizer_trace.前两个经常被人使用,由于第三个难度较大,大家使用的较少,下面简单说下如何使用.   opitimizer_trace的使用: # 开启跟踪,默认是关闭的 SET optimizer_trace="enabled=on";       #执行你的sql语句 select .... #查看trace信息 SELECT * FROM INFORMATIO…
本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.oprofile.nicstat.dstat.iotop.tsar.iostat 掌握几个即可,功能大同小异(个人常用的是 dstat.sar). CPU: mpstat -P ALL 1  每隔1s显示一次 上图可以看到CPU调度不均衡.因此我们可以尝试将pid为700的进程绑定到第四颗CPU上.ta…
Master/Region Server调优 JVM调优 默认的RegionServer内存是1G,而Memstore默认占40%,即400M,实在是太小了,可以通过HBASE_HEAPSIZE参数修改(CDH界面也可以修改) 1)通用调整,同时调整MASTER Region Server vim $HBASE_HOME/conf/hbase-env.sh export HBASE_HEAPSIZE=8G   ===> 会生效HBASE的所有实例,MASTER和Region Server 2)P…
OS 1.CPU 用户态时间(us):cpu执行应用代码所占时间的百分比. 内核态时间(sy):cpu执行内核代码所占时间的百分比,系统态时间与应用相关. 空闲时间(id):cpu空闲时间百分比.空闲可能的原因: 1.应用被同步原语阻塞.等待锁释放 2.应用等待某些东西,例如:查询数据库并等待返回结果 3.应用的确无所事事 运行队列(r):所有正在运行和就绪状态(一旦有可用cpu就可以运行)的线程数.该数据最好小于或等于CPU个数,否则性能就可能会下降.如果长时间运队列过长,则可能是系统过载.…
数据倾斜即为数据在节点上分布不均,是常见的优化过程中常见的需要解决的问题.常见的Hive调优的方法:列剪裁.Map Join操作. Group By操作.合并小文件. 一.表现 1.任务进度长度为99%,在任务监控页面中发现只有几个 reduce 子任务未完成: 2.单一 reduce 记录与平均记录数差异过大(大于3倍),最长时长>>平均时长: 3.job数多的,效率低,多次关联后,产生几个jobs,起码半小时以上才跑完: 二.原因 1.key分布不均: 2.业务数据本身问题: 3.建表有问…
一.选择Percona Server.MariaDB还是MYSQL  mysql应用源码:http://www.jinhusns.com/Products/Download/?type=xcj 1.Mysql三种存储引擎 MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎.从MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB. MyISAM没有提供事务支持,而InnoDB提供了事务支持. XtraDB是Inno…
一.选择Percona Server.MariaDB还是MYSQL  mysql应用源码:http://www.jinhusns.com/Products/Download/?type=xcj 1.Mysql三种存储引擎 MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎.从MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB. MyISAM没有提供事务支持,而InnoDB提供了事务支持. XtraDB是Inno…
http://blog.jobbole.com/113659/ 我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能提升.尤其是在服务器资源越来越便宜的当下. 警告 没有两个数据库或者应用程序是完全相同的.这里假设我们要调整的数据库是为一个“典型”的 Web 网站服务的,优先考虑的是快速查询.良好的用户体验以及处理大量的流量. 在你对服务器进行优化之前,请做好数据库备份! 1. 使用 In…
对于很多刚接触Spark的人来说,可能主要关心数据处理的逻辑,而对于如何高效运行Spark应用程序了解较少.由于Spark是一种分布式内存计算框架,其性能往往受限于CPU.内存.网络等多方面的因素,对于用户来说,如何在有限的资源下高效地运行Spark应用程序显得尤为重要.下面只针对Spark-On-Yarn的一些常用调优策略做详细分析... http://sharkdtu.com/posts/spark-tun.html…
优化思路: 1.检查数据表结构,改善不完善设计 2.跑一遍主要业务,收集常用的数据库查询SQL 3.分析查询SQL,适当拆分,添加索引等优化查询 4.优化SQL的同时,优化代码逻辑 5.添加本地缓存和redis缓存 6.增加数据库硬件配置和增加读写分离 检查数据表结构 看数据表结构设计是否合理. 尽可能不要使用NULL值 建表的时候如果不对创建的值设置默认值,MYSQL设置默认都会为NULL. NULL使得索引维护更加复杂,强烈建议对索引列设置NOT NULL NOT IN.!=等负向条件查询在…
作者从容错.性能等方面优化了长时间运行在yarn上的spark-Streaming作业 对于长时间运行的Spark Streaming作业,一旦提交到YARN群集便需要永久运行,直到有意停止.任何中断都会引起严重的处理延迟,并可能导致数据丢失或重复.YARN和Apache Spark都不是为了执行长时间运行的服务而设计的.但是,它们已经成功地满足了近实时数据处理作业的常驻需求.成功并不一定意味着没有技术挑战. 这篇博客总结了在安全的YARN集群上,运行一个关键任务且长时间的Spark Strea…
众所周知,我们在写程序的时候,好习惯是在重要的代码打上日志.以便监控程序运行的性能和记录可能发生的错误. 但是,如果日志是基于同步IO文件操作,那么就必须考虑到访问总次数或并发数目. 如果总次数或并发数目非常大,比如10W或者1K/s 或更多,那么就要注意IO的同步性能对程序速度的拖慢效应了. 这个时候,你就有必要用异步或NIO的日志类库来写日志了. 下面,是我一段扫描服务器的过期文件和清理转移到其他位置的部分代码.日志为IO同步写入. 下班前,测试一把,感觉速度总有点不对,后面发现是日志类库同…
需要删除.新增记录或更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer中,这样就不需要从磁盘中读入这个数据页了. purge:将 change buffer 中的操作应用到原数据页,得到最新结果的过程.触发purge时机:除了访问这个数据页会触发 purge 外,系统有后台线程会定期 purge.在数据库正常关闭(shutdown)的过程中,也会执行 purge 操作.需…
对于长时间运行的Spark Streaming作业,一旦提交到YARN群集便需要永久运行,直到有意停止.任何中断都会引起严重的处理延迟,并可能导致数据丢失或重复.YARN和Apache Spark都不是为了执行长时间运行的服务而设计的.但是,它们已经成功地满足了近实时数据处理作业的常驻需求.成功并不一定意味着没有技术挑战. 这篇博客总结了在安全的YARN集群上,运行一个关键任务且长时间的Spark Streaming作业的经验.您将学习如何将Spark Streaming应用程序提交到YARN群…
#查看日期情况 #show variables like '%general%'; #开启日志 #SET GLOBAL general_log = 'On'; #指定日志文件 #SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';   原文如下: 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都…
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null: 3. String str=”kvill”:String str=new String (“kvill”);的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念. 常量池(const…
jmap jmap(JVM Memory Map)命令可生成head dump文件,还可查询finalize执行队列.Java堆和永久代的详细信息. 通过配置启动参数:-XX:+HeapDumpOnOutOfMemoryError参数可以让JVM出现OOM时自动生成dump文件. 官方文档链接地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jmap.html 命令格式: jstat [ option ] pid jsta…
Java性能调优笔记 调优步骤:衡量系统现状.设定调优目标.寻找性能瓶颈.性能调优.衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈).性能调优结束. 寻找性能瓶颈 性能瓶颈的表象:资源消耗过多.外部处理系统的性能不足.资源消耗不多但程序的响应速度却仍达不到要求. 资源消耗:CPU.文件IO.网络IO.内存. 外部处理系统的性能不足:所调用的其他系统提供的功能或数据库操作的响应速度不够. 资源消耗不多但程序的响应速度却仍达不到要求:程序代码运行效率不够高.未充分使用资源.程序结构不合理. C…
一文了解MySQL性能测试及调优中的死锁处理方法,你还看不明白? 以下从死锁检测.死锁避免.死锁解决3个方面来探讨如何对MySQL死锁问题进行性能调优. 死锁检测 通过SQL语句查询锁表相关信息: (1)查询表打开情况 SHOW OPEN TABLES WHERE IN_USE> 0 (2)查询锁情况列表 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS (3)查询锁等待信息,其中blocking_lock_id是当前事务在等待的事务 SELECT *…
mysql的调优 调优的最终目的:节省系统资源.提高响应速度下面从6个维度对mysql进行优化. 第一步:对服务器的参数进行调优 通过show profile命令分析,如果sql语句在执行过程中等待时间长,就需要对mysql服务器的参数进行调优. 1.1优化服务器的硬件 服务器的硬件性能直接决定着MySQL数据库的性能: 配置较大的内存:减少对磁盘的IO次数 配置高速磁盘系统:提高磁盘IO的性能 合理分布磁盘I/O 配置多处理器:供多个线程使用 1.2优化mysql的参数 linux系统中在/e…
一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层面的调优,一般要先定位到是那种资源出现瓶颈——CPU. 内存.硬盘.网络,然后入手调优.所以其实MySQL 的调优,其实不是那么简单,它要求我们对 硬件.OS.MySQL 三者都具有比较深入的理解.比如 NUMA 架构的CPU是如何分配CPU的,以及是如何分配内存的,如何避免导致SWAP的发生:Li…
前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其在某些大型电商应用之后,更是将其推崇至极. 前面有一段时间我写过SQL Server数据库的一个调优系列,有兴趣的可以关注下. 从本篇起,我将开始分析关于MySQL数据库的一系列的调优内容,同样作为开篇,先就在MySQL调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体…