性能优化

性能优化-MySQL慢查日志分析工具(mysqldumpslow)

喜欢而已 提交于 2020-01-23 19:35:22
6、如何通过慢查日志发现有问题的SQL 1、查询次数多且每次查询占用时间长的sql 通常为pt-query-digest分析的前几个查询;该工具可以很清楚的看出每个SQL执行的次数及百分比等信息,执行的次数多,占比比较大的SQL 2、IO大的sql 注意pt-query-digest分析中的Rows examine项。扫描的行数越多,IO越大。 3、未命中的索引的SQL 注意pt-query-digest分析中的Rows examine 和Rows Send的对比。说明该SQL的索引命中率不高,对于这种SQL,我们要重点进行关注。 来源: CSDN 作者: cwl_java 链接: https://blog.csdn.net/weixin_42528266/article/details/103992979

redis 缓存设计和性能优化

China☆狼群 提交于 2020-01-22 17:31:30
请求缓存: https://blog.csdn.net/xiaowangku/article/details/90409224 缓存的受益与成本 通过缓存加速读写速度:CPU L1/L2/L3 Cache、Linux page Cache加速硬盘读写、浏览器缓存、Ehcache缓存数据库结果。 降低后端负载 后端服务器通过前端缓存降低负载:业务端使用Redis降低后端MySQL负载等。 成本 数据不一致:缓存层和数据层有时间窗口不一致,和更新策略有关。 代码维护成本:多了一层缓存逻辑 使用场景 对高消耗的SQL:join结果集/分组统计结果缓存 加速请求响应:利用Redis、Memcache优化IO响应时间 大量写合并为批量写:如计数器先Redis累加再批量写DB 缓存的更新策略: LRU方法,LFU方法FIFO方法: 例如maxmemory-policy。 超时提出: 例如:例如 expire 主动更新:开发控制生命周期: 策略: 一致性 维护成本 LRU/LIRS算法剔除 最差 低 超时剔除 较差 低 主动更新 强 高 缓存在细粒度的控制: 1、从MySQL获取用户信息: select * from user where id={id} 2、设置用户信息缓存: set user:{id} `select * from user where id={id}` 3、缓存粒度:

【原/转】UITableview性能优化总结

限于喜欢 提交于 2020-01-21 23:57:29
UITableView作为ios中使用最频繁的控件之一,其性能优化也是常常要面对的,尤其是当数据量偏大并且设备性能不足时。本文旨在总结tableview的几个性能优化tips,并且随着认识的深入,本文将持续更新,力求将tableview的优化做到极致! Let`s begin! 治病就要先知道病因,我们先来分析一下影响tableview滚动性能的因素有哪些: 1、cellForRowAtIndexPath方法中处理了过多业务 2、tableviewCell的subview层级太复杂,做了大量透明处理 3、cell的height动态变化时计算方式不对 前面两点比较好理解,本文着重处理第三种情况。 想要对tableview做性能优化,只能从tableview的数据源方法入手,纵观这些方法,主要有两个方法可以为我们所用:cellForRow以及heightForRow。我们一一分析: (1)heightForRowAtIndexPath 很多人都把优化的重点放到了 cell for row at indexpath 那个方法里了,在这里尽可能的少计算,但是却忽略了另一个很轻松就能提升加载时间的方法 : - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Android性能优化典范

梦想的初衷 提交于 2020-01-21 13:32:03
2015年伊始,Google发布了关于 Android性能优化典范的专题 ,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。 如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象。那么用户在32ms内看到的会是同一帧画面。 用户容易在UI执行动画或者滑动ListView的时候感知到卡顿不流畅,是因为这里的操作相对复杂,容易发生丢帧的现象,从而感觉卡顿。有很多原因可以导致丢帧,也许是因为你的layout太过复杂

Android性能优化典范

混江龙づ霸主 提交于 2020-01-21 13:31:43
http://www.cnblogs.com/xitang/p/4239818.html 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。 如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象。那么用户在32ms内看到的会是同一帧画面。 用户容易在UI执行动画或者滑动ListView的时候感知到卡顿不流畅,是因为这里的操作相对复杂,容易发生丢帧的现象,从而感觉卡顿。有很多原因可以导致丢帧,也许是因为你的layout太过复杂,无法在16ms内完成渲染,有可能是因为你的UI上有层叠太多的绘制单元,还有可能是因为动画执行的次数过多。这些都会导致CPU或者GPU负载过重。 我们可以通过一些工具来定位问题,比如可以使用HierarchyViewer来查找Activity中的布局是否过于复杂,也可以使用手机设置里面的开发者选项

Android性能优化典范

空扰寡人 提交于 2020-01-21 13:31:14
2015年伊始,Google发布了关于 Android性能优化典范的专题 , 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用 户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染, 如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。 如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象。那么用户在32ms内看到的会是同一帧画面。 用户容易在UI执行动画或者滑动ListView的时候感知到卡顿不流畅,是因为这里的操作相对复杂,容易发生丢帧的现象,从而感觉卡顿。有很多原 因可以导致丢帧

MySQL性能优化(1)

我怕爱的太早我们不能终老 提交于 2020-01-21 01:25:23
MySQL性能优化(1) MySQL单实例与多实例 MySQL多实例的优缺点 MySQL多实例的实现场景 JSON类型 JSON_EXTRACT()函数 JSON_OBJECT()函数 JSON_INSERT()函数 JSON_MERGE()函数 MySQL单实例与多实例 实例:MySQL数据库由后台线程及一个共享内存区组成,数据库实例才是真正用于操作数据库文件的程序集,是一个动态概念。 多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个数据库进程就是多实例。 MySQL多实例的优缺点 优点 :充分利用服务器资源。 缺点 :资源抢占问题。 MySQL多实例的实现场景 中小型公司的选择:公司业务访问量不大,希望不同的业务使用不同的数据库服务而互相不受影响,建于资金不足,可食用多实例,比如可以通过3台服务器部署9-15个实例,交叉做主从复制、数据备份及读写分离,这样也能达到多个服务器只装1个数据库的效果。 并发访问不是很大的业务:当业务访问量不大,服务器资源基本都是空闲的,这时很适合多实例应用,如果对sql语句优化较好,多实例是一个很值得使用技术,即使并发打,合理分配资源以及搭配号服务,问题也不大。 门户网站应用:门户网站通常会使用多实例,因为配置硬件好的服务器,可以节省IDC机柜空间,同时运行多个实例可以减少资源浪费情况

HBase性能优化方法总结

旧城冷巷雨未停 提交于 2020-01-20 06:40:44
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考: 淘宝Ken Wu同学的博客 。 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。 有关预分区,详情参见: Table Creation: Pre-Creating Regions ,下面是一个例子: public static boolean createTable(HBaseAdmin admin, HTableDescriptor table, byte[][] splits) throws IOException { try { admin.createTable(table, splits); return true; } catch (TableExistsException e) { logger.info("table " + table.getNameAsString() + "

MySQL性能优化规范建议

倖福魔咒の 提交于 2020-01-20 01:13:08
一、数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割。 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)。 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符。 临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀。 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)。 二、数据库基本设计规范 没有特殊要求(即 Innodb 无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用 Innodb 存储引擎(MySQL5.5 之前默认使用 Myisam,5.6 以后默认的为 Innodb)。Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好。 数据库和表的字符集统一。建议UTF-8,因为其兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效,如果数据库中有存储 emoji 表情的需要,字符集需要采用 utf8mb4 字符集。 所有表和字段都需要添加注释。 尽量控制单表数据量的大小,建议控制在 500 万以内。500 万并不是 MySQL 数据库的限制,过大会造成修改表结构

前端性能优化

我的梦境 提交于 2020-01-19 20:59:39
本文主要考虑客户端性能、服务器端和网络性能,内容框架来自Yahoo Developer Network,包含 7 个类别共 35 条前端性能优化最佳实践,在此基础上补充了一些相关或者更符合主流技术的内容。 主流技术的内容 前端性能的一个重要指标是页面加载时间,不仅事关用户体验,也是搜索引擎排名考虑的一个因素。 来自Google的数据表明,一个有10条数据0.4秒能加载完的页面,变成30条数据0.9秒加载完之后,流量和广告收入下降90%。 Google Map 首页文件大小从100KB减小到70-80KB后,流量在第一周涨了10%,接下来的三周涨了25%。 亚马逊的数据表明:加载时间增加100毫秒,销量就下降1%。 以上数据更说明「加载时间就是金钱」,前端优化主要围绕提高加载速度进行。 一、页面内容 1. 减少HTTP请求数 Web 前端 80% 的响应时间花在图片、样式、脚本等资源下载上。最直接的方式是减少页面所需资源,但并不现实。所以,减少HTTP请求数主要的途径是: 合并JS/CSS文件。服务器端(CDN)自动合并,基于Node.js的文件合并工具,通过把所有脚本放在一个文件中的方式来减少请求数。 使用 CSS Sprite 将背景图片合并成一个文件,通过 background-image 和 background-position 控制显示 行内图片 (Base64编码)