开发性能良好的数据库
从项目最开始的计划阶段就应该开始数据库优化:在数据库开发结束之后,再想提高性能就很困难了。对于设计错误的数据库,随着开发工作的进展,修复其中的问题所要付出的代价将会显著增加。对于在项目的开始阶段只需要5分钟的时间就可以精心实施的约束,如果要在数据库使用数年之后再来修复和实施它,将会花费几个星期的时间。
速度慢和速度快而且稳定的数据库之间的最大区别并不在于精妙的服务器优化技术,或者查询优化器提示。在我看来,下面的5个因素将会决定数据库是否具有良好的性能。如果不能满足其中任何一个因素,数据库的速度就会变得很慢。
1. 数据驱动的、规范化的数据库物理设计。
2. 完善的和平衡的索引策略。
3. 使用基于集合的查询方式编码,并避免以过程化(基于行的方式)来操作数据。
4. 出色地使用数据库约束和触发器来实施业务规则。
5. 精心地设计表、索引和代码以避免锁的争用。
在升级硬件之前进行数据库优化是一种好的开发方法和习惯。通过优化设计和代码来提高性能的方法要远远胜于通过购买新硬件来提高性能的方法。
最佳实践:我认为单独使用硬件来提高性能实际上将会在较长的时期内妨碍性能的提高,因为管理层将会认为他们已经为优化投过了资,从而不再会重视问题的真正原因。此外,通过硬件提高性能的方法将有可能在一段时间内掩盖造成问题的真正原因,这好比是一个“绷带与治疗”的问题。