在DB2中由上至下的几个概念: 实例(Instance), 数据库(Database), 表空间(TableSpace), 容器(Container) 在一个操作系统中,DB2数据服务可以同时运行多个实例(有别于Oracle在一个系统内只能起一个实例). 数据库定义在实例中,一个实例可以包含多个数据库。在同一个实例中的不同数据库是完全独立的,分别拥有自己独立的系统编目表。 表空间有2种管理方式: DMS(Database management Space)方式 SMS(System manegement Space)方式 DMS与SMS方式在表空间建立时指定,建好后不能转换。对于DMS方式,一个表空间对应了一个或多个容器(Container),容器指定了数据的物理存储位置。对于SMS方式,只能够指定一个目录,不能够增加。 表空间具有以下类型: 系统编目表空间(SysCatSpace) 系统临时表空间(SysTempSpace) 用户表空间(UserSpace) 用户临时表空间(UserTempSpace) 一个数据库中必须存在两个系统基本的表空间,分别是系统编目表空间与系统临时表空间。在数据库中创建的任何对象都以在系统编目表空间中增加记录的方式体 现,对于临时表空间,其占用磁盘大小是根据使用情况动态伸缩的,即仅在需要时才分配磁盘空间,并在使用后进行回收。此外,若用户需要创建表,则需要创建用 户表空间,若需要使用临时表,则需要创建用户临时表空间。 容器分为三种类型: Files 文件 Devices 设备 Directory 目录 文件与设备,用于DMS方式的表空间; 目录,用于SMS方式的表空间,此种方式不需要人工管理数据存储文件,DB2可根据情况在目录中自动增加存储文件,只要磁盘空间允许。 实质上,表空间是数据存储的逻辑位置定义,容器则是数据存储的物理位置定义。 数据库的性能 影响一个数据库的性能主要有以下因素: 磁盘(Disk) 内存(Memory) 处理器(CPU) 网络(Network) 其中以磁盘最为显著,90%的性能瓶颈可能来自于磁盘的IO竞争; 其次是内存,一方面是指物理内存的总量要满足需求,另一方面是指与内存相关的配置参数应正确配置; 当然处理器的性能也很重要,多路CPU会对哪些依赖计算能力的复杂SQL查询起到显著的效果; 网络不属于主要因素,属于客观的环境因素,是指过慢的网速会对数据的传输造成影响。以下列出一些对于提高数据库性能有效的方法: 对于运行数据库服务的服务器可以尽可能的配置多块物理磁盘,每块的容量不必太大,这样可以有效的分担数据存储与读取操作过程的磁盘IO竞争。即采用多块小容量的磁盘在性能上要优于仅采用一块大容量的磁盘。 如果条件允许,尽量使数据存储服务与操作系统分别运行在物理分开的磁盘上。 采用DMS(Database Management Space)管理方式的表空间。 在物理不同的磁盘上创建多个表空间。然后可以将数据和索引分别存放在不同的表空间,这样可以显著的提高性能。还可以把一个使用频繁的大表纵向拆成多个小表,分别存放在不同的表空间中,然后用一个视图进行联合。 DB2服务器可以管理裸设备,即除系统以及DB2服务运行磁盘以外,为DB2数据存放单独准备磁盘,可以是多块,分区后不需要格式化,创建裸设备后直接交给DB2进行管理,用于存储数据。 系统的临时表空间对数据库性能影响很大,当由管理的物理内存不能满足数据库操作的需要时,DB2便会把临时数据写到磁盘上,这时便用到了系统临时表空间,并且这种情况会经常发生。 尽量在磁盘靠近最内层磁道的位置安放数据,因为此处磁盘的访问速度较快。 与性能相关的主要参数 DB2的参数配置分为两个级别,一个是实例级别,另一个是数据库级别。对数据服务性能影响较大的参数主要在数据库级别配置。以下是三个比较重要的内存配置参数: bufferpagelocklistsortheap bufferpage: 由同一个数据库中的所有对象共享。 sortheap: 用于排序的内存交换区,非共享,不宜设置太大,否则,很容易引起内存耗尽,因为每一个事务都会申请独立的内存用于排序。 |