百战归来再读书
最近的做的项目是用ODBC实现ESQL。
一方面要了解ESQL的时序,一方面要熟练使用ODBC的API,而且得考虑调优。
为程序员提供可编程的Driver,接口开放,用法自由,时间很有挑战性,也很有成就感的事儿,不过,领域知识得充足才行。
熟读Symfoware的Manual,做起事才能畅通无阻,游刃有余。
做事有法可依固然好,但是还需要更好的思维方式和更多的知识储备。
比如最近做性能改善遇到一个问题:用ODBC实现的ESQL比真实ESQL性能劣化很多。
执行5000次INSERT操作,慢了10倍
执行10000次INSERT操作,慢了20倍
执行20000次INSERT操作,慢了90倍
……
面对这样的测试数据,我仅仅意识到,慢!二话不说就着手调查INSERT的执行时序,一堆调查结果送到了PM那里,他老人家却首先很惊讶劣化数据为什么不是成正比的?
高人啊,点到为止,俺大脑才开窍,想到是资源管理问题,观察下内存,程序运行不是那么Smoothly。
等俺把资源管理问题解决了,数据成正比后,又开始分析测试数据,纠结了一天,弄清楚了一系列东西:
用户应该使用的不是单独执行INSERT,而是使用动的执行,PREPARE和EXECUTE的方式,会重用很多情报,性能自然会上升很多。
窃喜间,顿觉很是惭愧,如果多系统地看些数据库理论的书,不至于要看代码看好久才了解道这一层知识。
工作两年了,终于对领域知识有所认识了,没有了学校时对软件开发懵懂无知的感觉,知道该怎么学习了。
有种百战归来再读书的渴望,积累了这么多零散的知识点,还有一些工作方式,真有必要好好系统地整理下,补给些知识。
March 8th, 2010 by xifanlou | Posted in Software Engineering | Comments (3)
