网上有没有一些关于如何调整oracle来做大量插入和低读操作的通用指南?
下面的所有答案都是非常好的建议。我必须澄清以下几点。我使用的是10g,这是我们使用Oracle的绝对要求。我还对用于调优的oracle实例参数(可能是一些不同的锁定策略)更感兴趣。
发布于 2008-10-11 18:23:07
让我假设您想要做大量的插入操作,所以您只是想忽略所有其他类型的操作,只是为了让这些插入操作完成,而没有问题。
首先,您是否完全排除了其他类型的数据库?像工业数据库这样的系统可以很好地处理大量的插入,通常用于从工厂环境中测量某物的设备接收和存储数据。Oracle是一个关系型数据库,它可能不是适合您需要的软件类型。
话虽如此,让我们假设您可以、将要或应该使用Oracle。你需要做的第一件事是考虑你需要做出这个假设的所有不同类型的数据。如果它们都是关于相同类型的数据,那么您需要一个表,并且它需要是精简的,并且对于插入来说是平均的。
执行此操作的最佳方法是执行以下操作:
如果可以拆分数据,请考虑将其拆分,使其存储在不同的物理磁盘上。这样,磁盘I/O问题将不会是跨数据类型的,并且只影响一种类型的数据。
另一方面,您有一个反规范化的表,其中包含许多针对查找和更新之间的平衡进行了优化的索引,并且您需要找到一些中间方法来获得您想要的性能。
发布于 2008-10-11 17:45:18
在数据库设计方面,在要插入的表上放置尽可能少的约束、索引和触发器,因为这些都会减慢插入速度。
索引的缺乏显然会损害您的SELECT性能,但听起来这不是您主要关心的问题。
发布于 2008-10-11 18:06:34
我们谈论的是哪种应用程序?哪个版本的Oracle?
例如,如果您正在设计数据仓库加载流程,您通常会希望对临时表执行直接路径插入,然后构建任何必要的索引,然后执行分区交换以将数据加载到已分区的目标表中。当然,如果您正在执行单行插入,这就不能很好地工作。
根据Oracle版本和应用程序类型,您可能还希望对表启用压缩。从CPU的角度来看,插入通常很便宜,因此可能有足够的CPU可用于压缩,这可以大大减少所需的I/O量,这通常是您的瓶颈。
https://stackoverflow.com/questions/194352
复制相似问题