最后一篇是关于持久层的性能优化,和dba的关系比较密切,我认为持久层优化的主要原则是:减少表关联查询。即使必须要有关联查询,也要减少关联的表的个数。根据经验,大多数的应用,性能瓶颈都在数据库这边,我们围绕上面的原则,可有下面的一些办法来进行优化。
- 增
加表冗余字段。这种方法会使你的表不符合范式要求,但是我们必须知道,范式仅仅是理论上的,也就是建议你的表设计的一个标准,恐怕严格符合第四范式的项目
不能满足非功能性需求。我们在进行er设计的时候,可根据项目实际需求,在某些表中加入冗余字段,前提是这些冗余字段不会经常变化,如果变化过快,将会给
数据同步更新带来麻烦。
- 增加数据库索引。在对系统上线一段时间后跟踪的sql进行归类统计,按表、按where字段排序,找出一张表中最常做为查询条件的字段,在这些字段上建立索引,一般一张表可以建很多个索引,对查询性能的提升,效果是非常明显的。
- 分表。设计前要预估算出一张表的最大记录行数,考虑是否要进行分表设计(我的其它文章中会专门讲到)。
- 对
表进行水平和垂直分区。设计前要预估算出一张表的最大记录行数,以决定是否会对该表数据分区。根据我的经验,一般一张表的数据量达到10万条以上,就可以
考虑分区了。分区类型有很多种,要根据项目情况考虑,mysql是在5.15中才加入分区功能的,使用mysql的同学要注意哦。
- 数
据文件物理存储问题。在进行建表或建分区时,都可以选择文件的物理存储路径,因为服务器一般都有多块磁盘,那我们就一定要注意,根据表的访问题情况,利用
单独磁盘的I/O,合理的分配到物理磁盘上去,提高效率。如果只有一块盘,可考虑将存储文件划分到不同逻辑分区上去,逻辑分区在物理扇区上是连续分配的,
对效率提升有好处。
- 数据库集群。一般数据库都是支持集群功能的,配置集群,水平扩展数据库的性能。
- 采用读写分离。我曾经帮朋友设计过的一个高并发系统,数据库采用mysql实现,就采用了读、写分离机制,这个也是许多高并发网站常用的方法。
- 程序员写程序的时候要注意,可尽量使用一些特有数据库的专用语句,对性能提升是有好处的,缺点是不便于数据库的更改移植。
- 程序员要尽量避免行级锁,程序中尽可能用乐观锁或离线锁。
- 可
将有些大数据量的sql操作写到存储过程中去,因为存储过程都是经过编译的,执行效率非常的高,我们的一些早期项目都用这个来做复杂的大数据量业务操作。
缺点也很明显,一是数据库平台更换与移植,另一个就是性能优化时无法水平提升系统性能,比如:应用服务器做了集群,但数据库这边的存储过程仍然是瓶颈。
- 最后一点是设计上的,原理是数据库删除效率不高,那我们就少用删除。平进的删除,只是对数据库打上删除标志,在非系统高峰期,用定时任务真正删除打了标记的数据,这种做法在移动、电信的项目中比较常见。
性能优化需要在实践中不断总结积累,上面的一些是我这些年来的实践所总结,谈不上全面与深刻,我也相信,每个人都有自己的一套独门绝技,欢迎补充完善。
分享到:
相关推荐
根据提供的文件内容,我们可以从中提取有关web性能优化(服务器优化)的知识点。文件内容虽然有部分OCR扫描错误和不连贯,但我们可以识别出关键概念和组件,并将它们串联成一篇详尽的web服务器优化知识介绍。 首先...
数据库优化是提升系统性能的关键环节,特别是在大数据量和高并发的场景下,其重要性不言而喻。本文件"数据库优化最佳实践.pptx"主要涵盖了优化的思路、实践案例以及总结,以下是对这些内容的详细解读。 一、介绍 在...
总结来说,iBATIS3提供了更高的开发效率和易用性,而JDBC则在性能优化和灵活性上有优势。选择哪个取决于项目需求,例如,对于快速开发和维护的小型项目,iBATIS3可能是更好的选择;而对于性能要求极高,且需要深度...
SSM是一个流行的Java web开发框架组合,Spring负责整体控制反转和依赖注入,SpringMVC处理HTTP请求和响应,MyBatis则作为持久层框架,简化数据库操作。 2.2 科研室管理系统的设计要求 系统需具备用户管理、项目管理...
- 系统的性能优化,包括代码优化、数据库查询优化等,以保证系统的高效运行。 4. SSM框架介绍 - Spring框架作为核心,提供了依赖注入和面向切面编程,简化了组件之间的耦合,使得系统更易于测试和维护。 - ...
这篇分享总结聚焦于淘宝网如何实现HDFS元数据的独立服务和独立持久化存储,这是一项旨在提高系统性能、可靠性和可扩展性的优化实践。 首先,元数据服务在HDFS中的角色至关重要。它包含了文件和目录的命名空间信息...
总结,学生管理系统升级版的实现涉及到多个方面的技术,包括但不限于系统架构设计、数据库管理、前端交互、业务逻辑处理、数据安全和性能优化。理解并掌握这些知识点,将有助于我们构建更高效、更实用的学生管理系统...
这篇PPT主要介绍了Hibernate的核心概念、持久层的重要性以及ORM(对象关系映射)技术,同时也提及了Hibernate与其他持久层框架的对比。 **Hibernate核心概念** Hibernate是开源的Java库,它提供了一种对象-关系...
- 持久层框架的主要任务包括减少重复的SQL代码,提供面向对象的设计,优化性能,并增强系统的移植性。 4. **Hibernate简介**: - Hibernate是一个轻量级的JDBC封装工具,提供全面的O/R Mapping功能,旨在简化...
2. 性能优化:缓存策略减少数据库查询次数,负载均衡技术分散服务器压力,提高系统响应速度。 五、系统设计与实现 论文可能详细描述了系统的系统设计过程,包括需求分析、系统架构设计、数据库设计、模块划分等,...
MyBatis作为持久层框架,简化了SQL操作。此外,还简要概述了B2C电子商城的基本功能和运营模式,以及涉及到的相关技术,如Web开发技术、数据库管理、安全机制等。 系统需求分析与设计阶段,论文会详细分析系统需要...
为了提高系统性能,可以采用哈希表或平衡二叉搜索树等数据结构优化查找效率。此外,系统还可以进一步拓展,如引入条形码扫描器的直接接口、支持多种支付方式(如移动支付)、集成会员管理系统等。 总结,C语言编写...
这种架构将表现层、业务层和持久层分离,使得系统更具有灵活性、低耦合性和可扩展性,便于后期的维护和升级。选用的技术栈包括Spring、Struts和Hibernate,这些都是Java EE平台上广泛使用的开源框架,能够有效地支持...
2. 性能优化:通过索引优化、数据库设计优化等手段提升系统性能,处理大量并发投票请求。 3. 移动端支持:考虑到移动设备的普及,可以将系统扩展为适应手机和平板的版本,利用响应式设计或开发独立的移动应用。 ...
通过对测试结果的分析和总结,可以发现并修复系统存在的问题,优化系统性能,提高用户体验。 本系统选择MySQL作为数据库,因其开源、免费、高性能和易用性,适合中小规模的应用场景。同时,系统的前端界面应简洁...
【系统性能优化】 论文中提到的点餐配送系统不仅关注功能实现,还注重提高点餐效率和服务质量。通过对系统架构的优化,如合理的数据库设计、缓存策略的运用、异步处理机制的引入等,可以提升系统性能,减少延迟,更...
最后,进行系统测试和性能优化,总结研究结果,并对未来工作提出展望。 2. 系统开发环境: 本系统采用Java作为后端编程语言,Java以其强大的跨平台性和面向对象特性成为开发企业级应用的首选。B/S(Browser/Server...
3. MyBatis:作为持久层框架,MyBatis将SQL语句与Java代码分离,提高了代码的可读性和可维护性。 4. MySQL:作为关系型数据库,存储学生信息、课程数据等,支持事务处理和复杂查询。 三、功能模块详解 1. 用户管理...
SSM框架因其灵活性和高效性,在企业级应用开发中广泛应用,它整合了Spring的依赖注入、Struts的MVC架构和MyBatis的持久层处理,能够有效地处理复杂的业务逻辑。 论文首先进行了需求分析,确定了系统的功能需求,如...