决定应该赋予数据库什么样的存储和配置,已经成为一项杂乱无章的工作,这种现象我见得多了。数据库工程师一般都是数据库的专家,而对于存储配置的低层细节几乎一无所知。另外存储管理员和工程师也往往不知道数据库如何利用下层的存储,以及数据库、索引文件、记录文件,当然还有文件系统和卷管理器的需求和非常好的配置又是什么。
这往往造成了存储资源利用率低,增加了整体成本,导致性能降低甚至可能无法满足你的需求,此外预算也总是很紧张,而管理上又要求有效地利用可获得的预算。本文将解决数据库管理员和存储工程师在解决架构问题而进行协作时的一些问题。
数据库与存储架构配置
组件
大部分数据库的端到端存储架构所需硬件和软件如下:
* 控制文件(Control file)
* 表空间(Table space)
* 索引文件(Index file)
* 重做日志(亦称在线日志,Redo log)
以上每一部分都拥有多个组件,具有多种特性和功能,对整体性能影响显著。
数据库
数据库应用本身具有多重特性和功能,必须加以考虑。Oracle的组件如下:
因为上述组件都有不同类型的访问模式,所以每种文件类型均被存储在不同的文件系统中,并有调节选项。其它数据库也拥有相似的文件类型,需要以相似的方式考虑。
控制文件
大部分数据库都建议使用多个控制文件以确保可靠性。控制文件并不需要常写常读,不过你必须确定各文件被放置在不同的RAID集上,适用于不同的RAID控制器。
表空间
表空间一般是数据库中量最大的数据。当读取列上的大表时,表空间可以由更大的I/O请求访问。根据大小和更新频率的不同,表空间常常位于更大的数据条带化RAID-5上,以便获得较RAID-1更高的密度和提升的性能。
索引文件/空间
在许多数据库中,索引文件是被访问频率最高的数据。查找索引文件有可能需要很大的IOPS(每秒I/O操作)。另外,有时候数据库被重新索引,这在计算上非常密集,并且需要大量的I/O带宽。因为数据库和所需的查找类型不同,索引空间也许会很大,一般来说,根据传统的UNIX文件尺寸,索引文件的大小为2 GB。
重做日志
重做日志文件中存放了各种记录,你可以撤销对数据库的各种操作,这些被称为重做记录。重做记录用于循环缓冲器中,因为它一般是小I/O,所以用RAID-1就不错。由于需要两个或以上的重做日志文件,通常将日志文件放在不同的RAID-1卷上。
操作系统
数据库一般都需要具备操作系统的一些特性和功能,如共享内存和标志等。另外,数据库也经常利用计算机内大量的内存,这通常由改变数据库中的可调参数来实现。
在许多操作系统中,I/O请求的大小限制在256 KB或128 KB,不能改变,所以如果必须对存储和操作系统完成更多的请求,就会影响到I/O性能。