【将复杂的运算分解到其它过程】
此种思想将整个系统的操作看成一个整体,类似于负载均衡。在系统中常见的一个问题是,数据量比较大,对数据的查询统计变得很复杂很缓慢。对于这种问题应该在设计时就进行考虑,建立表的冗余字段或者汇总表存储一些汇总信息,在录入或更新数据时计算冗余字段或汇总表的值。这样将复杂的运算时间分解到了数据录入修改的时间。而一般的录入/修改都是单笔的操作,此时的一点点延时(可能很少很少)对用户的体验是没有什么影响的,而进行查询统计时变成了直接查询表,也会变得很快。
【将多次查询简化为一次查询】
将多次查询简化为一次查询,可以减少数据库连接的性能消耗。对于此种思路,我认为可以有三种实现:
1. 通过视图,将多次查询的结果直接通过一条语句计算查询
此种方式可能会用到sum,group by等语句,但使用不好,往往是性能变的更差,不建议使用。对于视图最好只是简单的表的关联,不涉及数据的运算。
2. 使用存储过程或函数
接收参数,将运算封装在存储过程或函数中,理论上,参数越精确,操作的数据越少,速度也越快。但问题是1.不易维护;2.要能够灵活的查询程序就比较复杂。
3. 在代码中进行查询或计算
由于要在代码中进行计算,所以可能很多性能的消耗是在多次连接数据库查询数据上。设计代码结构时需要将多次取数改成有限次的取数,在代码中对数据进行整理,同时对于重复的数据需要使用缓存。
【通过用户体验减少使用者的影响】
曾经有一个很慢的查询,用户点击查询按钮后,等了10秒钟,数据才出来,这个时间内屏幕没有任何变化,从心理上感觉,似乎等待了很长时间;
后来添加了一个滚动的进度条,有个进度条,是可以知道系统并没有死掉仍在运行,但滚动条滚动的速度太快,用户感觉过了很长很长时间数据才出来;
最后修改了一下滚动条动画,将滚动速度调慢,10秒种的时间滚动条只滚动了两次,数据处理的时间没有变化,但心理上感觉似乎比以前快了很多。
【使用缓存技术】
对于经常操作的数据库数据,需要添加查询缓存。可在查询时将查询结果放入缓存,在增删改数据时清空缓存。在ibatis、hibernate等orm框架中都支持缓存,另外OSCache这样的缓存框架也提供了更多的功能。
【SQL优化】
我的感觉,如果有好的SQL编写形成,一般是用不到SQL优化的。但有时候一个不好的SQL,优化后可能会得到性能质的提升。
【设计产品操作方式】
在产品设计时也要考虑性能的问题,通过分页、将数据分步骤展示等方式,防止将大量的数据直接展现。
相关推荐
在处理 Informix 并发问题时,核心关注的是如何确保数据一致性并提高系统效率。并发问题通常发生在多个用户或进程同时访问和修改同一数据时,可能导致数据不一致或死锁。在 Informix 数据库管理系统中,有多种策略...
本文主要分享了Oracle DBA在实际工作中遇到性能问题时的一些解决策略,重点在于通过监控操作系统层面的指标来诊断Oracle数据库的性能瓶颈。 首先,针对IO问题,DBA可以通过系统工具如`sar`来检查CPU的用户使用率 `%...
在CSS(层叠样式表)布局中,排版是网页设计的...以上是关于CSS排版的一些核心知识点,熟练掌握它们将极大地提升你的网页设计能力。实践是检验真理的唯一标准,理论结合实际操作,相信你能在CSS排版的道路上越走越远。
优化AgentX子代理的代码,确保其在处理管理请求时不会影响系统的实时性能。 7. **调试技巧**: 使用VxWorks提供的调试工具,如Wind River Workbench,进行代码调试和性能分析。利用AgentX的调试日志和SNMP的trap...
在实际项目中,我们发现以下几点心得对于提高设计质量和效率尤为重要。 准备工作是成功的第一步。在项目启动之初,我们需与项目相关的各方进行充分交流,了解市场需求、系统架构设计要点、软件功能的实现路径以及...
红黑树是一种自平衡的二叉查找树,在计算机科学领域中应用广泛。...了解红黑树的工作原理对于开发人员而言是十分重要的,它不仅能帮助理解这些数据结构的行为,还能在设计复杂系统时提供有效的数据组织方案。
在评估性能时,我们可以从以下几点出发: 1. **市场验证**:在选型过程中,查看同类产品中芯片的应用情况是一条快捷的途径。若市场上已有成熟产品成功使用了某款芯片,这通常意味着该芯片具备一定的可靠性和稳定性...
通过JSP程序设计课程的学习,我们总结了以下几点经验: * 首先要把基础打牢,不要只是注重技术开发,对于一些基本概念也要掌握。 * 其次要多一些专业方面的书,多了解我们专业动向。 * 再者就是要多上机实践,学到...
以下,我们将从几个方面详细探讨小功率开关电源设计的心得体会。 首先,设计方法的选择是小功率开关电源设计中至关重要的一步。当前,集成PWM芯片由于其集成度高、控制方便、外围电路简单等优势,成为设计者们的...
* 学习Verilog语言需要选择合适的书籍和资源,例如《verilog数字系统设计教程》、《设计与验证Verilog HDL》等。 二、FPGA开发板的设计和制作 * FPGA开发板是FPGA开发的重要工具,需要熟悉QuartusII软件的各种功能...
本文旨在通过对建筑电气施工过程中的几个关键环节进行深入探讨,分享笔者在实际工作中的经验心得,以期为同行提供参考,并共同推进建筑电气施工质量的提升。 首先,电气施工的前期工作,即预留预埋阶段,是整个施工...
数据分布方式是分布式系统设计的关键问题之一,包括哈希方式、按数据范围分布、按数据量分布、一致性哈希等。副本与数据分布是紧密相关的,合理的副本策略可以提高数据的读写性能和系统的可靠性。 基本副本协议包括...
它帮助理解数据处理过程,识别数据源、处理中心和数据接收点。 3.3 数据字典 数据字典是对系统中所有数据元素的详细定义,包括名称、类型、长度、格式、来源和用途,为后续的模型设计提供基础。 4、概念模型设计 ...
在学习C#的过程中,有几个核心知识点是必不可少的: 1. **基础语法**:C#的基础语法包括变量声明、数据类型(如int、float、string等)、运算符、流程控制(如if语句、switch语句、for循环、while循环等)、函数...
通过对腾讯云大规模任务调度系统的架构蜕变进行深入分析,我们可以得出以下几点心得: 1. **持续优化的重要性**:随着业务需求的变化和技术的进步,调度系统的架构需要不断迭代和完善。 2. **技术创新**:采用新...
接下来,深入学习VC,我们需要了解以下几点: 1. **调试技巧**:VC集成开发环境提供了强大的调试工具,如断点、单步执行、查看变量值等,掌握这些技巧能帮助我们定位和修复代码中的错误。 2. **STL(Standard ...
在学习Linux时,以下几点心得可能对初学者有所帮助: 1. 了解基础命令行操作:熟悉诸如ls、cd、mkdir、rm等基本命令,是掌握Linux的第一步。熟练使用这些命令,可以提高在Linux环境下的工作效率。 2. 学习Shell...