`

系统设计时关于性能问题处理的几点心得

 
阅读更多

【将复杂的运算分解到其它过程】

此种思想将整个系统的操作看成一个整体,类似于负载均衡。在系统中常见的一个问题是,数据量比较大,对数据的查询统计变得很复杂很缓慢。对于这种问题应该在设计时就进行考虑,建立表的冗余字段或者汇总表存储一些汇总信息,在录入或更新数据时计算冗余字段或汇总表的值。这样将复杂的运算时间分解到了数据录入修改的时间。而一般的录入/修改都是单笔的操作,此时的一点点延时(可能很少很少)对用户的体验是没有什么影响的,而进行查询统计时变成了直接查询表,也会变得很快。

 

【将多次查询简化为一次查询】

将多次查询简化为一次查询,可以减少数据库连接的性能消耗。对于此种思路,我认为可以有三种实现:

1. 通过视图,将多次查询的结果直接通过一条语句计算查询

    此种方式可能会用到sum,group by等语句,但使用不好,往往是性能变的更差,不建议使用。对于视图最好只是简单的表的关联,不涉及数据的运算。

2. 使用存储过程或函数

    接收参数,将运算封装在存储过程或函数中,理论上,参数越精确,操作的数据越少,速度也越快。但问题是1.不易维护;2.要能够灵活的查询程序就比较复杂。

3. 在代码中进行查询或计算

   由于要在代码中进行计算,所以可能很多性能的消耗是在多次连接数据库查询数据上。设计代码结构时需要将多次取数改成有限次的取数,在代码中对数据进行整理,同时对于重复的数据需要使用缓存。

 

【通过用户体验减少使用者的影响】

曾经有一个很慢的查询,用户点击查询按钮后,等了10秒钟,数据才出来,这个时间内屏幕没有任何变化,从心理上感觉,似乎等待了很长时间;

后来添加了一个滚动的进度条,有个进度条,是可以知道系统并没有死掉仍在运行,但滚动条滚动的速度太快,用户感觉过了很长很长时间数据才出来;

最后修改了一下滚动条动画,将滚动速度调慢,10秒种的时间滚动条只滚动了两次,数据处理的时间没有变化,但心理上感觉似乎比以前快了很多。

 

【使用缓存技术】

对于经常操作的数据库数据,需要添加查询缓存。可在查询时将查询结果放入缓存,在增删改数据时清空缓存。在ibatis、hibernate等orm框架中都支持缓存,另外OSCache这样的缓存框架也提供了更多的功能。

 

【SQL优化】

我的感觉,如果有好的SQL编写形成,一般是用不到SQL优化的。但有时候一个不好的SQL,优化后可能会得到性能质的提升。

 

【设计产品操作方式】

在产品设计时也要考虑性能的问题,通过分页、将数据分步骤展示等方式,防止将大量的数据直接展现。

分享到:
评论

相关推荐

    关于处理informix并发问题的几点心得

    在处理 Informix 并发问题时,核心关注的是如何确保数据一致性并提高系统效率。并发问题通常发生在多个用户或进程同时访问和修改同一数据时,可能导致数据不一致或死锁。在 Informix 数据库管理系统中,有多种策略...

    Oracle性能调优实践中的几点心得

    本文主要分享了Oracle DBA在实际工作中遇到性能问题时的一些解决策略,重点在于通过监控操作系统层面的指标来诊断Oracle数据库的性能瓶颈。 首先,针对IO问题,DBA可以通过系统工具如`sar`来检查CPU的用户使用率 `%...

    关于css排版的几点心得

    在CSS(层叠样式表)布局中,排版是网页设计的...以上是关于CSS排版的一些核心知识点,熟练掌握它们将极大地提升你的网页设计能力。实践是检验真理的唯一标准,理论结合实际操作,相信你能在CSS排版的道路上越走越远。

    在VxWorks系统下开发Agentx的几点心得.rar

    优化AgentX子代理的代码,确保其在处理管理请求时不会影响系统的实时性能。 7. **调试技巧**: 使用VxWorks提供的调试工具,如Wind River Workbench,进行代码调试和性能分析。利用AgentX的调试日志和SNMP的trap...

    嵌入式系统硬件项目设计心得.docx

    以下几点心得可以帮助我们更好地理解和执行此类项目: 首先,设计前的准备工作至关重要。在着手设计之前,必须深入了解各方需求,确定最佳解决方案。这包括市场、系统架构、软件功能实现以及性能提升等多个角度的...

    关于红黑树的一点心得

    红黑树是一种自平衡的二叉查找树,在计算机科学领域中应用广泛。...了解红黑树的工作原理对于开发人员而言是十分重要的,它不仅能帮助理解这些数据结构的行为,还能在设计复杂系统时提供有效的数据组织方案。

    课程设计jsp学习心得

    通过JSP程序设计课程的学习,我们总结了以下几点经验: * 首先要把基础打牢,不要只是注重技术开发,对于一些基本概念也要掌握。 * 其次要多一些专业方面的书,多了解我们专业动向。 * 再者就是要多上机实践,学到...

    小功率开关电源设计的几点心得体会

    以下,我们将从几个方面详细探讨小功率开关电源设计的心得体会。 首先,设计方法的选择是小功率开关电源设计中至关重要的一步。当前,集成PWM芯片由于其集成度高、控制方便、外围电路简单等优势,成为设计者们的...

    FPGA开发心得—FPGA开发心得

    * 学习Verilog语言需要选择合适的书籍和资源,例如《verilog数字系统设计教程》、《设计与验证Verilog HDL》等。 二、FPGA开发板的设计和制作 * FPGA开发板是FPGA开发的重要工具,需要熟悉QuartusII软件的各种功能...

    分布式系统原理介绍

    数据分布方式是分布式系统设计的关键问题之一,包括哈希方式、按数据范围分布、按数据量分布、一致性哈希等。副本与数据分布是紧密相关的,合理的副本策略可以提高数据的读写性能和系统的可靠性。 基本副本协议包括...

    学生学籍管理系统数据库课程设计.docx.docx

    它帮助理解数据处理过程,识别数据源、处理中心和数据接收点。 3.3 数据字典 数据字典是对系统中所有数据元素的详细定义,包括名称、类型、长度、格式、来源和用途,为后续的模型设计提供基础。 4、概念模型设计 ...

    C# 学习心得(最新)

    在学习C#的过程中,有几个核心知识点是必不可少的: 1. **基础语法**:C#的基础语法包括变量声明、数据类型(如int、float、string等)、运算符、流程控制(如if语句、switch语句、for循环、while循环等)、函数...

    数字图像处理课程设计 基于Matlab的数字图像处理.pdf

    【设计的内容】部分可能涵盖了以下几点: 1. 图像预处理:包括去噪、平滑、增强对比度等,目的是提高图像质量,便于后续处理。 2. 图像定位:寻找身份证在图像中的位置,通常使用模板匹配或边缘检测等方法。 3. 图像...

    业务系统架构的锐变与进化——大规模任务的性能突破 共34页.pdf

    通过对腾讯云大规模任务调度系统的架构蜕变进行深入分析,我们可以得出以下几点心得: 1. **持续优化的重要性**:随着业务需求的变化和技术的进步,调度系统的架构需要不断迭代和完善。 2. **技术创新**:采用新...

    VC学习2-我们学习VC的心得与体会

    接下来,深入学习VC,我们需要了解以下几点: 1. **调试技巧**:VC集成开发环境提供了强大的调试工具,如断点、单步执行、查看变量值等,掌握这些技巧能帮助我们定位和修复代码中的错误。 2. **STL(Standard ...

    Linux学习心得体会

    在学习Linux时,以下几点心得可能对初学者有所帮助: 1. 了解基础命令行操作:熟悉诸如ls、cd、mkdir、rm等基本命令,是掌握Linux的第一步。熟练使用这些命令,可以提高在Linux环境下的工作效率。 2. 学习Shell...

Global site tag (gtag.js) - Google Analytics