使用BLOB进行在线备份的速度
在Oracle 8中,使用数据库中的BLOB进行联机备份非常慢。慢一点,我的意思是要花一个多小时来备份具有100MB BLOB数据的数据库。 Oracle承认它很慢,但是并不能解决问题(要花很多钱才能获得支持。)有人知道Oracle是否在后续版本中解决了此问题?另外,在线备份与BLOB一起在SQL Server和MySQL中的运行速度有多快?
解决方案
我使用Redgate的SQL Server的SQL备份-即使使用我的BLOB数据,它的速度也非常快。
我会保留我进行EDI时使用的每个文件的副本,因此尽管它们不大,但数量众多且包含BLOB。这些文本文件远远超过了100Megs。
重要的是要注意,Redgate的SQL备份只是标准SQL备份的前端...基本上,它为我们提供了添加的管理功能,但仍使用SQL Server备份引擎。
过去我曾遇到过此问题,我们发现的唯一可行的解决方法是确保LOB位于它们自己的表空间中,并对其使用不同的备份策略,或者切换到使用BFILE类型。是否可以使用BFILE取决于我们使用LOB的方式。
BFILE上的一些用法信息:
http://download-uk.oracle.com/docs/cd/B10501_01/java.920/a96654/oralob.htm#1059942
请注意,BFILEs位于Oracle外部的文件系统上,因此我们需要在常规Oracle备份之外的进程中备份它们。在一个项目中,我们只是安排了rsync到异地备份。还要注意的重要一点是,我们不能通过JDBC创建/更新BFILE,但是可以读取它们。
根据BLOB的大小,请确保适当地以行内/行外方式存储它们。
参见http://www.dba-oracle.com/t_table_blob_lob_storage.htm
我们可以将要创建的导出文件和Oracle表空间放在不同的磁盘上吗?I / O吞吐量可能是限制因素...?
8i上的exp速度很慢,但没有我们描述的那么快。我已经在10g的分钟内备份了千兆字节的blob。(使用expdp备份到磁盘)
要回答有关SQL Server中BLOB的在线备份速度的问题,它与备份SQL 2000/2005/2008常规数据的速度相同,通常受存储速度的限制。使用BLOB进行数据库备份时,通常速度超过100mb / sec。
请谨慎使用备份压缩工具,尽管如果BLOB是高度随机的二进制数据,那么我们将浪费CPU周期来尝试压缩数据,并且压缩会使备份变慢而不是变快。