性能优化的一知半解
工作中接触到数据库数据量不算小了,自以为对性能优化有了一点心得,还以为他人不懂,因此敝帚自珍,一般人俺不告诉他。
这次有同事做的项目貌似遇上性能问题,我根据肚子里那点东西,蜻蜓点水似的指点一二:尽量用一个数据库连接完成所有的工作。。。用存储过程好一点。。。SET NOCOUNT ON可以减少网络传输量。。。
但这些狗屁人家根本不予采纳,通过编写测试程序各个测试,最后采用添加磁盘阵列卡的方式,使得性能猛烈提升,完美地解决了问题。
这令我感到震动。我自己也写了个测试工具,来印证过去自己笃信不疑的定律:数据库连接真的那么重要吗?存储过程省了编译的时间,对性能提高帮助大吗?
结果发现,循环插入5万条记录,连接一次和连接5万次,没有什么区别;SQL语句和存储过程,也没有什么区别。真他妈的。
也许,因为现在普遍采用连接池技术,所谓的OPEN一条数据库连接,都只是从池中拿出一条而已,并非新开的连接。大概只有连接池耗尽,或者现有连接不够,才能对性能有一点影响。存储过程?也许传递参数式的SQL语句,数据库也会对它进行重用的。。。
唉,不懂的东西真是太多了。要不停地学习才行,别气馁,别放弃。