五、适宜迁移到固态盘的数据库组件
一旦确定系统正在经受 IO 子系统的困扰,下一步就是要确定哪些 Oracle 数据库组件遇到了最高的 I O ,从而导致 IO 等待时间。应该检查下面的数据库组件 :
全部数据库 :有一些数据库,应该将其全部文件迁移到固态盘上。这些数据库往往至少具有如下特征之一:
l          并发 访问。 正受到大量并发用户访问的数据库应考虑将所有数据存储在固态盘上,因为我们从上一章节知道,每一个 Oracle 用户进程都在执行自己的磁盘读取。将所有数据存储在固态盘上后,将确保存储不成为应用程序的瓶颈,可以最大限度地提高服务器和网络的利用率。 I O 等待时间将减少,服务器和带宽将得到充分利用。
l          频繁随机访问所有表格。对于某些数据库,不可能找出一组经常访问的文件子集。很多时候这样的数据库是有效的大规模索引。
l          中小规模数据库。 考虑到购买 RAID 系统所需要的固定费用,购买固态盘存储中小型数据库往往是经济实惠的。例如 RamSan-400 ,能够以某些企业级 RAID 系统的价格提供 128GB 的数据库存储能力。
l          大型读密集型数据库。考虑到搭建一个高性能 RAID 系统的固定费用(购买大缓存,大量的硬盘驱动器用于条带化),购买 RamSan-620/630 闪存固态盘阵列解决方案更经济、速度更快,以加快大型 读密集型数据库。 RamSan-630 可以扩展到 10TB 的容量。
l          数据库性能是公司盈利能力的关键。有一些数据库子集如果处理的进程加快,就能帮助企业赚更多的钱、减少损失或提高客户满意度。固态盘可以帮助这类公司更有利可图。
 
Redo 日志 Redo 日志是 Oracle 数据库写性能的最重要因素之一。每当数据库写入时, Oracle 就创建 Redo 条目。使用 Redo 日志的最佳做法是配置镜像 Redo 日志组,至少需要 2 组。每个 Redo 条目写入到两个或两个以上镜像 Redo 日志。 Oracle 强烈建议使用镜像 Redo 日志,以便在发生故障时还有备份 Redo 日志可用。待写入到 Redo 日志完成后该操作才得到确认。 Redo 日志采用线性输出,如果需要,管理员也可以设置为自动归档 Redo 日志。归档使日志复制到另一个位置后才可以被重用。在一个缓慢的基于磁盘的系统中,归档可能成为另一个 IO 等待的来源。
Redo 日志是数据库操作过程中产生持续 IO 的一个来源。将 Redo 日志存储在最快的磁盘存储上相当重要。将 Redo 日志写入固态盘是提高整个数据库的性能的绝佳方式。使用基于主机的镜像来映像固态盘对提高可靠性是有帮助的。
索引 :索引是用于加速访问数据库记录一个数据结构。通常为数据库中的每个数据库表创建一个索引。任何时候添加一条记录和一条记录的识别数据被修改,这些索引都将进行更新。当发生读操作时,索引会引导以便 Oracle 迅速得到正确的记录。此外,许多并发用户可以同时读取任何索引。索引对磁盘驱动器操作的特点是频繁、小规模和随机交易。在这些情况下,磁盘驱动器无法跟上需求,以致出现了 IO 等待时间。
通过将索引存放在固态盘上,可以提高整个应用程序的性能。对于拥有高并发用户数的在线交易处理( OLTP )系统,这会导致更快的数据库访问。因为索引可从现有的数据重新创建,是适宜迁移到固态盘的普通 Oracle 组件。
临时表空间 。临时段用来支持某些 Oracle 操作的临时数据。临时表空间段支持复杂的排序、散列、全局临时表和位图索引操作。因为临时表空间支持多种操作,很快会变得支离破碎。在 TMS 的内部测试中,我们发现随着数据变得支离破碎, Oracle 数据库的性能会急剧下降。
当出现复杂的操作,如果将临时表空间移动到固态盘上会完成得更快。因为 IO 到临时表空间可以更频繁,而磁盘驱动器无法对此应对自如。
回滚数据 。拥有大量并发用户的数据库,回滚段(新版本中的撤消表空间)是引起争论的起因。任何时候 Oracle 更改纪录就会创建一个撤消数据。换句话说,如果发出一个删除命令后,所有的原始数据就会存储在撤消表空间中,直到操作提交。如果交易回滚,数据就会从撤消表空间被移回到它被删除的表中。
由于撤消表空间与每一个变化和操作息息相关,将撤消表空间存储在固态盘上是很有用的。这将在创建更新交易时提供更快速的事写入性能,并使撤消表空间很快有能力提供后续操作。
经常访问的表 。据估计, OLTP 系统中存储的数据仅有 5 -10 %是经常被访问的。这些表通常占据全部数据库活动以及存储 IO 很大的比例。当大量用户访问同一表时,他们很可能在访问不同的记录和不同的属性。因此,在该表上的活动是随机的。磁盘驱动器对随机数据服务请求是最不擅长的。事实上,在服务随机交易时,磁盘驱动器的最高性能会下降高达 95 %。当表经受频繁的访问,交易队列就会产生,其他交易就在等待磁盘响应下一个请求。这些队列是表明系统正在经受 IO 等待时间的另一个迹象。
将频繁访问的表迁移到固态盘是大有裨益的。固态盘的性能不受随机访问的影响。此外,固态盘比硬盘具有更快的访问时间。因此,如果将经常访问的表移到固态盘上,应用性能可以提高多达 25 倍。