一.初识高速缓存和连接池
设想这样一种情形:你突然口渴,需要一杯水来缓解,从心情上来讲,当然是越快越好 了。通常,一杯水的产生包括从水源(井水、河水或江水、甚至海水等)抽取,通过管 道传输和设备净化,才到达你饮水的容器中。上述过程是必须的,但并不是每一杯水的 产生都必须把上述过程重复一次。你可以用一个大一点的容器(例如缸或罐等)来盛大 量的水,喝水之前分到杯子小部分中即可,你的代价只是把水从缸转移到杯子;你还可 以在大量用水(例如洗澡或洗衣服等)时,只需打开水阀,而不必临时铺设通往水源的 管道和购买净化水的设备。因为水是人们生活不可缺少的东西,每时每刻都在被大量地 使用,而且物理本质也完全相同,所以政府会铺设管道和建设水处理站,完成那些比较 困难的工作,达到资源共享的目的,而你也可针对自己的需求,用容器来盛那些具有特 定用途的水。本文将要和你讨论的高速缓存和连接池与上述特定容器和传输管道有很多 相似之处,它们都达到了同一个目的:在满足用户意愿的前提下,尽可能地共享资源, 以提高整个系统的性能。 高速缓存和连接池是数据访问中的重要技术,某些情况下的应用对访问数据库的性能有 巨大的提高,而且都得到了数据库业界的普遍支持。前者由DBMS厂商针对自己的数据库 实现,提供可供用户配置的方案;后者是JDBC的一个标准接口,由支持J2EE技术的应用 服务器厂商提供具体的实现,而你的Java程序代码无需更改。本文将向你简单介绍高速 缓存和连接池的概念和机制,并以PointBase数据库为例向你展示高速缓存的应用,而一
个简单的连接池应用场景将向你描述应用的条件和提高的性能。
二.Cache(高速缓存)和Connection Pool(连接池)的概念和机制
它们不是数据库独有的技术,但却得到数据库业界的普遍支持,并在其它数据存取和对 象复用领域有很多类似的应用。
1.Cache(高速缓存)
作为个人计算机的日常使用者,你肯定听说过这些名词:Cache(高速缓存)、Memory( 内存)、Hard disk(硬盘)。它们都是数据存取单元,但存取速度却有很大差异,呈依 次递减的顺序。对于CPU来说,它可以从距离自己最近的Cache高速地存取数据,而不是 从内存和硬盘以低几个数量级的速度来存取数据。而Cache中所存储的数据,往往是CPU 要反复存取的数据,有特定的机制(或程序)来保证Cache内数据的命中率(Hit Rate)
。因此,CPU存取数据的速度在应用高速缓存后得到了巨大的提高。
对于数据库来说,厂商的做法往往是在内存中开辟相应的区域来存储可能被多次存取的 数据和可能被多次执行的语句,以使这些数据在下次被访问时不必再次提交对DBMS的请 求
设想这样一种情形:你突然口渴,需要一杯水来缓解,从心情上来讲,当然是越快越好 了。通常,一杯水的产生包括从水源(井水、河水或江水、甚至海水等)抽取,通过管 道传输和设备净化,才到达你饮水的容器中。上述过程是必须的,但并不是每一杯水的 产生都必须把上述过程重复一次。你可以用一个大一点的容器(例如缸或罐等)来盛大 量的水,喝水之前分到杯子小部分中即可,你的代价只是把水从缸转移到杯子;你还可 以在大量用水(例如洗澡或洗衣服等)时,只需打开水阀,而不必临时铺设通往水源的 管道和购买净化水的设备。因为水是人们生活不可缺少的东西,每时每刻都在被大量地 使用,而且物理本质也完全相同,所以政府会铺设管道和建设水处理站,完成那些比较 困难的工作,达到资源共享的目的,而你也可针对自己的需求,用容器来盛那些具有特 定用途的水。本文将要和你讨论的高速缓存和连接池与上述特定容器和传输管道有很多 相似之处,它们都达到了同一个目的:在满足用户意愿的前提下,尽可能地共享资源, 以提高整个系统的性能。 高速缓存和连接池是数据访问中的重要技术,某些情况下的应用对访问数据库的性能有 巨大的提高,而且都得到了数据库业界的普遍支持。前者由DBMS厂商针对自己的数据库 实现,提供可供用户配置的方案;后者是JDBC的一个标准接口,由支持J2EE技术的应用 服务器厂商提供具体的实现,而你的Java程序代码无需更改。本文将向你简单介绍高速 缓存和连接池的概念和机制,并以PointBase数据库为例向你展示高速缓存的应用,而一
个简单的连接池应用场景将向你描述应用的条件和提高的性能。
二.Cache(高速缓存)和Connection Pool(连接池)的概念和机制
它们不是数据库独有的技术,但却得到数据库业界的普遍支持,并在其它数据存取和对 象复用领域有很多类似的应用。
1.Cache(高速缓存)
作为个人计算机的日常使用者,你肯定听说过这些名词:Cache(高速缓存)、Memory( 内存)、Hard disk(硬盘)。它们都是数据存取单元,但存取速度却有很大差异,呈依 次递减的顺序。对于CPU来说,它可以从距离自己最近的Cache高速地存取数据,而不是 从内存和硬盘以低几个数量级的速度来存取数据。而Cache中所存储的数据,往往是CPU 要反复存取的数据,有特定的机制(或程序)来保证Cache内数据的命中率(Hit Rate)
。因此,CPU存取数据的速度在应用高速缓存后得到了巨大的提高。
对于数据库来说,厂商的做法往往是在内存中开辟相应的区域来存储可能被多次存取的 数据和可能被多次执行的语句,以使这些数据在下次被访问时不必再次提交对DBMS的请 求