在 Oracle 8 中,使用数据库中的 BLOB 进行在线备份非常慢。慢,我的意思是用 100MB 的 BLOB 数据备份数据库需要一个多小时。Oracle 承认它很慢,但不会解决这个问题(为了支持支付这么多钱)。有谁知道 Oracle 是否在后续版本中解决了这个问题?此外,在线备份与 BLOB 在 SQL Server 和 MySQL 中的工作速度有多快?
6 回答
To answer your question about the speed of online backups of BLOBs in SQL Server, it's the same speed as backing up regular data for SQL 2000/2005/2008 - it's typically limited by the speed of your storage. I usually get over 100mb/sec on my database backups with BLOBs.
Be wary of using backup compression tools with those, though - if the BLOB is binary-style data that's heavily random, then you'll waste CPU cycles trying to compress the data, and compression can make the backup slower instead of faster.
我过去遇到过这个问题,我们发现的唯一体面的解决方法是确保 LOB 位于它们自己的表空间中,并对它们使用不同的备份策略,或者切换到使用 BFILE 类型。您是否可以使用 BFILE 将取决于您如何使用 LOB。
BFILE 的一些使用信息:
http://download-uk.oracle.com/docs/cd/B10501_01/java.920/a96654/oralob.htm#1059942
请注意,BFILE 存在于 Oracle 之外的文件系统上,因此您需要在正常 Oracle 备份之外的进程中备份它们。在一个项目中,我们刚刚安排了 rsync 到异地备份。另外需要注意的是,您不能通过 JDBC 创建/更新 BFILE,但可以读取它们。
根据 BLOB 的大小,确保将它们适当地内联/外联存储。
您可以将您正在创建的导出文件和 Oracle 表空间放在不同的磁盘上吗?您的 I/O 吞吐量可能是限制因素...?
我使用 Redgate 的 SQL Backup for SQL Server —— 它速度快得离谱,即使是我的 BLOB 数据。
我保留了我进行 EDI 处理的每个文件的副本,因此虽然它们不是很大,但它们数量众多,而且是 BLOB。我有超过 100Megs 的这些文本文件。
重要的是要注意 Redgate 的 SQL 备份只是标准 SQL 备份的前端......它基本上为您提供了额外的管理功能,但仍然使用 SQL Server 备份引擎。
8i 上的 exp 很慢,但没有你描述的那么多。我已经在 10g 的几分钟内备份了千兆字节的 blob ..(到磁盘 - 使用 expdp)