
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
性能优化问题是需要软件编程开发程序员长期关注的一个问题,而本文我们就通过案例分析来简单了解一下,软件开发性能优化都需要关注哪些问题。
高并发和高性能
高并发是什么?一般用响应时间、并发吞吐量TPS,并发用户数等指标来衡量。
高性能是什么?高性能是指程序处理速度非常快,所占内存少,CPU占用率低
针对高并发和高性能,常见的手段不管是IO多路复用、零拷贝、线程池、冗余等等都是真是某两个大维度的处理,这两个大维度就是CPU和IO,归根结底目的其实尽可能的缩短磁盘和CPU之间的处理差距。
比如CPU用更短的时间完善任务,就需要从时间复杂度和空间复杂度入手,大部分人即使遇到非常复杂业务,需要自己手写算法的场景也是比较少的。
而针对IO磁盘的场景,在数据库的设计上展现的淋漓尽致,不管操作系统还是算法还是数据结构的设计,基本都要考虑磁盘的存储,所以磁盘IO这一块有非常多的优化空间。
不过从个人来看这篇文章脱离了另一个角度那就是SQL,SQL是集CPU、内存、硬盘计算机三大核心的统领,如果没有SQL现今的业务开发不知道要复杂多少倍。可谓是软件领域具影响力也是为难啃的一块。
综上所述,这篇文章的高性能和高并发,都是针对业务场景来讲述的。
顺序读写代替随机读写
这里提到两个点:
合理表设计和提前规划业务会用到的热字段,在热字段合理使用索引。
诀窍是提前编写一些伪业务查询代码,可以很直观的验证索引设计是否合理。
设计和使用索引有下面这些技巧:
越是具备性的字段优先考虑,举例来说就是比如男女就不适合作为索引,哪怕来几百万数据,他们的区分度也就是1和0,而订单ID则不同,通常每个用户有自己的流水订单,数据库建立索引也更佳合理,各种查询的覆盖面也会更广。
减少业务流水表大量耗时计算
涉及到多个表JOIN的建议采用离线表进行Map-Reduce计算,之后再进行回流计算。
数据过期策略
数据过期策略是定期把数据存储到历史表进行备份,或者备份到离线表中,减少线上大量数据的存储。通过定期分流数据,可以减少count和一些索引扫描的时间,大大提高查询的执行效率。
合理使用内存
合理使用内存需要引入淘汰策略,划分数据的存储空间,计过程中需要考虑好成本和查询性能的平衡。
数据压缩
目前主流中间件本身对于数据提供了压缩策略,日常容易接触磁盘IO的场景是打印日志,不能够为了便于排查,打印过多的JSON.toJSONString(Object),同时磁盘很容易被打满,按照日志的容量过期策略也很容易被回收。
所以数据压缩这一节更为重要的是打印日志,打印日志的时候思考几个问题:
这个日志有没有可能会有人看?看了这个日志能做什么?
每个字段都是必须打印的吗?
出现问题能不能提高排查效率?
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。