Wednesday, February 9, 2011

oracle读书笔记1:开发成功的oracle应用

这是《oracle 9i&10g 编程艺术,深入数据库体系结构》的第1章。
作者反复强调了,不要把数据库看作黑盒,只有深入理解了数据库的内部原理,才可以用好数据库。可以把数据库看作虚拟机、虚拟os一样学习。为此,作者举出了一些实例:

1,对y/n字段建立位图索引,结果导致写入、更新的速度很慢。原因在于写入、更新时要锁定位图索引,继而锁定数据表。改用b树索引就好了。

2,从sql server移植到oracle时要注意,使用多条语句共用1条连接。更重要的是务必在sql中使用数据绑定。原因不只是每次都要做硬编译,浪费cup时间。而是硬编译的时候会独占sga的资源(一种叫latch的设备),导致后续的操作排队串行。

3,举例说明了并发控制的规则:只有更新才会引起行级锁,读取不会加锁,写入不会阻塞读取,写入需要串行。这个做法比较神奇。看书的时候还能理解,过了春节就全忘了。

4,有时候的确需要串行读取,如预定会议室。就需要用for update手工加锁。

5,再有就是澄清了大家的一些误解,如:数据库独立性,数据库访问的开放性。作者的意见是还是先要了解各种数据库的差别。

虽然我还不能真的理解所有实例,但是我还是明白了,不能只把数据库看作数据存取的容器。他是1个复杂的工具,要用好,就要比较深入的学习。学习其他技术又何尝不是同样的道理。

在这个问题上,我做的很不足。主要是懒,不喜欢看内部代码。不过我会设想一下代码的内部机制,把一些接口方法串起来。

==================================================================================

其实,我已经在看第4章内存结构了,不过至今还没于动手写点什么。因为没有数据库开发的实际经验,有些具体脚本也只能跳过,看个结论再说。看来回头还要再学习一下pl/sql。

问题还是出在我对数据库的误解上,我以为学习oracle就是在oracle服务器上学习sql语句。所以就请同事推荐1本oracle的书。书是好书,推荐也完全正确,只是我的表达不对。

No comments:

Post a Comment