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