性能优化项目的总结

在性能优化项目中,我只是一个协助参与的角色,但也正好给了我从外部参看项目运作的机会,需要优化的系统已经是运行了6年的老系统,数据从来没有做过分离,涉及全库查询等致命的优化问题。另外本次项目的业主也希望对优化工作进行指导,造成走了不少弯路,同时由于垂直数据库技术不足,从外部找了合作伙伴进行深入性能优化研究。
总之这个项目虽小,但具备了复杂项目的各方面的内容,我也将会对这个项目进行初步的分析。

基础方向

SQL优化

首先要做的就是找出执行慢的SQL或业务模块,调查SQL的业务逻辑是否存在可优化的空间。

  1. 我们先做的是根据业务部分给出的缓慢业务,查询对应的SQL,并在测试环境中模拟运行,并记录生产环境和测试环境执行响应SQL的时间
  2. 将最有代表性的SQL(常用业务)的执行计划列出,并查看索引的执行情况。在本次项目中,发现执行计划没有执行设定的索引,这个关键问题也是优化的重点方向。

    调整表分区

    表分区一直是数据库优化的重要首选。根据业务将表按照特定的字段或特定规则进行分区,能够大大提升数据库的性能。但需要注意,分区表将影响数据的插入效率,与建立索引相同,在建立表分区的过程中要分析利弊。

    数据量的增加对性能开销的影响

    项目中存在测试环境与生产环境,其数据量级别不同,环境配置也不同,就会造成执行相同的SQL或业务得到相反的结果,故在性能优化的前期,要至少满足数据量的同步,这样可以实现具有相同标准的对比。
    在项目中的系统,将特定表的数据调整为相同时,执行效率基本相同,这就证明:

  3. 性能不是造成SQL执行慢的瓶颈
  4. 数据量的增加会造成缓存的增加,同时效率变换与缓存大小有关,并且和命中率有关。

    读写分离

    由于系统的业务数据量过大,且根据需求要满足无条件限制的查询,这样就势必造成全表扫描。为了能够查询效率,必须要实现读写分离,在业务时间范围只进行读操作(对查询时限要求较低),非业务时间将数据进行同步。

    关于业主

    本次项目的业主,技术负责人对技术要求极为苛刻,当然这也是为了项目能够顺利进行的必要条件,如何才能顺应这样的客户,时限快速迭代,快速汇报?在项目初期,我们也走了很多弯路。

  1. 一味的顺应只能让自己变成无头苍蝇
  2. 当出现信任危机的时候,建立信任可能已经是无法挽回的事情
  3. 沟通频率要把握清楚,埋头苦干也要抬头看路

以上是我们在于业务沟通和处事时出现的问题,当然问题的源头也出在开始我们对项目理解不清楚。

原文地址:http://blog.51cto.com/13571646/2066489

时间: 2024-10-10 00:23:08

性能优化项目的总结的相关文章

手机淘宝 521 性能优化项目揭秘

又是一年双十一,亿万用户都会在这一天打开手机淘宝,高兴地在会场页面不断浏览,面对琳琅满目的商品图片,抢着添加购物车,下单付款.为了让用户更顺畅更方便地实现这一切,做到“如丝般顺滑”,双十一前夕手机淘宝成立了“521”(我爱你)性能优化项目,在日常优化基础之上进行三个方面的专项优化攻关,分别是1)H5页面的一秒法则:2)启动时间和页面帧率提升20%:3)Android内存占用降低50%.优化过程中遇到的困难,思考后找寻的方案,实施后提取的经验都会在下面详细地介绍给读者. 第一章 一秒法则的实现 “

Tair LDB基于Prefixkey的范围查找性能优化项目测试及完成总结报告

项目这周就截止了,这算是我第一个有导师指导的真正意义上的C++项目,项目基本完成,想要实现的功能也已经实现,并做了大量的性能测试.不过这对于业界来说,可能完成的还不够成熟,还有许多待改进的地方,还不能马上投入使用,还需要进行严格的考验,毕竟tair的应用场景太重要了,不容一丝疏忽.但于我个人而言,帮助还是挺大的,不仅是多了一次有价值的项目经验,更是学到了一些项目之外的东西,比如计划的重要性,惰性的控制,时间的分配管理(找工作与项目进度产生冲突)等.好了,不多说了,在这最后一篇总结报告里首先给出性

Tair LDB基于Prefixkey的范围查找性能优化项目之如何提取key的prefix_size信息

New Document/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */ /* Author: Nicolas Hery - http://nicolashery.com */ /* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */ /* Source: https://github.com/nicolahery/markdownpad-github */ /*

Tair LDB基于Prefixkey的范围查找性能优化项目之如何建立prefix bloomfilter

项目是按照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完成的,上次解决了如何获取key的prefix_size问题"Tair LDB基于Prefixkey的范围查找性能优化项目之如何提取key的prefix_size".今天来继续解决第二个问题.在提案中有以下描述: 提取到prefix_size信息后,我们对所有的keys实现prefix bloomfilter,为了实现简单,我们可以在原有的filter block里加入新的

Tair LDB基于Prefixkey的范围查找性能优化项目之后续问题解决记录

项目是按照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完成的,目前方案中提出的三个重点问题已经全部解决,如下所示: 如何获取key的prefix_size问题:Tair LDB基于Prefixkey的范围查找性能优化项目之如何提取key的prefix_size 如何建立prefix bloomfilter:Tair LDB基于Prefixkey的范围查找性能优化项目之如何建立prefix bloomfilter 如何在get_range过程中使用

Tair LDB基于Prefixkey的范围查找性能优化项目之如何使用prefix bloomfilter进行过滤

项目是按照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完成的,目前已经解决了前面两个问题: 如何获取key的prefix_size问题"Tair LDB基于Prefixkey的范围查找性能优化项目之如何提取key的prefix_size". 如何建立prefix bloomfilter"Tair LDB基于Prefixkey的范围查找性能优化项目之如何建立prefix bloomfilter" 今天来继续解

Tair LDB基于Prefixkey的范围查找性能优化项目中期总结

"Tair LDB基于Prefixkey的范围查找性能优化"这个项目刚好进行了一个月,这一个月主要是熟悉项目.掌握项目和提出设计方案的过程,下面从几个方面总结下个人在该项目上所做的工作及自己的个人所得所感. 项目工作简单总结 下面是对阶段性的成果进行总结,并附有每个阶段的总结报告. 1. 项目实施计划的确定 不管什么类型的项目(大.小,难.易),在项目开展之前都应该有个可实施的计划,一方面能够确保项目的进度,另一方面也能防止有些人三天打鱼两天晒网的心态.在导师的细心指导下,我们确定了下

Tair LDB基于Prefixkey的范围查找性能优化项目提议方案

基于prefix bloomfilter的过滤思想和get_range接口数据的特点,在导师的指导下,提出如下的简单方案,对get_range接口的范围查找过程进行优化,使得能够根据prefix进行过滤,减少无效的磁盘IO. 待优化接口 int get_range(int area, const data_entry &pkey, const data_entry &start_key, const data_entry &end_key, int offset, int limi

web开发性能优化---项目架构篇

项目技术架构层级规划和介绍 简称四横两纵 四横即四大层次.分别为: 1.用户渠道层:用户渠道层是直接面向终于用户.通过站点的形式向用户提供产品展示.企业市场宣传.对产品的订购.互动分享.客户关怀以及用户中心入口等功能.并提供后期扩展移动终端接入: 2.应用业务层:该层面向的是系统管理人员. 为系统管理人员提供系统的总体管理,包含产品管理.企业管理.栏目管理.交易管理.信息管理.用户管理.统计分析.客户管理和日志管理. 以及对平台支付平台.短信平台.邮件平台.仓储物流.CDN分发.呼叫中心.CRM