(4.45)数据库编程中的三种性能模式比较
数据库系统性能很重要,这点人所共知。为了取得数据库系统的高性能,开发人员经常被告诫要用集合思维,不要用过程化思维来操作数据库。
这种说法理论上很正确,但是很多人觉得太抽象,不好理解。本短文试图用一种简单又易懂的方式来阐明其中的道理,以助有关开发人员在编码时尽可能地写出高性能代码。
本文超市购物 ( 购买十件商品 ) 来类比数据库访问,从而揭示出集合思维和过程化思维的实质性区别所在。
A:单行操作
B:批量循环操作
C:集合(结果集操作)
图一 超市购物和数据库操作的动作序列对比
从图一可知,第一类 A 和第二类 B ,就是过程性的思维方式,只有第三类 C 才是集合操作的思维方式。
很显然,也只有第三类 C 的数据库性能是最佳的,第一类 A 的数据库性能为最差,第二类 B 次之。
当然从计算机本质来说,有人会说,最后都是过程性处理方式啊,因为最后都会转化机器指令,全都是一条一条逐条执行。
这么讲,虽然有抬杠的味道,但是道理也对。
不过呢,区别在于:第一类 A 和第二类 B ,除了真正需要的数据库操作之外,包含了很多的无用操作,大大延长了处理时间(等于延长了锁的持续时间),和超市购物一比较,就很显然了,这里就不重复细说了。