Oracle数据库是甲骨文公司开发的一种关系型数据库管理系统,也就是RDBMS。
Oracle 是一款十分优秀的关系型数据库产品,Oracle从头到尾都是一个RDBMS,是针对OLTP 系统进行设计的,这一点从它底层的块结构就可以看出。Oracle在大并发量和海量数据关系型检索方面具有十分优越的性能,但是它并不擅长OLAP 。
与其他关系型数据库相比,Oracle在某些方面更为优秀,但也有其不足的地方,因此它绝对不是万能的。优势和劣势都是与生俱来的,这是由Oracle数据库的基本架构和数据存储的基础结构所决定的,优化只能解决局部性的问题,有限度地提升其性能,但是绝对无法完全掩盖结构性问题带来的负面影响。
Oracle的优势在于大并发量下的高吞吐能力,因此很适合大型企业级应用。
再往更为本质的方面去探讨,Oracle是一个RDBMS系统,也是一款应用软件。Oracle数据库除了将数据存储于文件中外,还通过一个被称为实例的后台机制向外提供服务。
Oracle不是一个简单的程序,而是十分复杂的体系。Oracle需要将数据存储在数据文件中,为了能够支持大量的并发用户访问数据库,并且提高数据库的访问性能,Oracle需要引入共享内存,从而实现资源的共享。
针对SQL引擎,每个SQL最终将会被解析为一系列的执行步骤,这就是我们常说的执行计划。如果同一个SQL执行多次,每次都要重新生成执行计划,那么效率就比较低下了,Oracle引入了共享池来实现这方面的共享。同样,如果一个数据块每次读取都要访问文件,那么效率就不高了,于是Oracle引入了DB Cache来缓存这些数据。同一个数据块可能被多个用户修改,如果每次修改就要直接存盘,那么效率也会降低,于是Oracle设计了DBWR进程,来专门负责将数据块写入文件。
作为应用程序的Oracle,必须依赖于其运行的系统环境
Oracle数据库的处理能力和性能也依赖于主机硬件、存储、网络和操作系统等因素,因此作为DBA不能仅仅就Oracle而论Oracle,还必须熟悉Oracle运行所依赖的环境。作为应用程序的Oracle,会和操作系统中的其他进程竞争有限的系统资源,因此,在数据库服务器上做一些比较大的操作时,一定要谨慎,因为这些操作可能会使Oracle数据库出现问题。
数据库是独立的,从物理结构上看,它是由一系列文件组成的,包括参数文件、口令文件、控制文件、数据文件、日志文件等。
Oracle是行存储的RDBMS数据库
由于Oracle是行存储的RDBMS数据库,这一特点也使其十分适合OLTP应用。从Oracle数据库的内部数据结构可以看出,Oracle在行存储数据方面下足了功夫,甚至连行锁都是设置在行头中的。在行锁的性能方面,Oracle的表现极为优秀,这一点毋庸置疑。不过这种设计,可能不适合一些经常以列为访问对象的OLAP系统,列压缩技术才是实现这类应用的最佳解决方案。