问题描述
亲爱的先生们,
我的问题是关于吞吐量 \ band带有问题。
我们有一个数据仓库解决方案,数据库大小约为1 TB,每晚 \ 早上运行时间约为15小时。最佳性能是用户可以在工作日开始时生成每日报告,而不是像现在这样在中午或更晚。
我们看到很多大读取 (90%),全表扫描是典型的负载,因为业务逻辑 (当然,我们也应该优化它,但这是另一个问题),我们有很多cta和直接路径加载来 “绕过” 重做,因此存档日志生成以减少IO (备份不与负载并行运行),在绕过重做优化之前,我们有2-300 GB生成的存档日志,现在只有10-20 GB。我们认为,由于这种类型的操作,我们需要大带宽,而不是在OLTP操作中更重要的大型IOPS。
磁盘系统是一个SAN,高带宽 (16 Gb \ s) FC连接,服务器有2个磁盘阵列,dbf文件驻留 (以及其他用于操作系统和交换文件等的驱动器),两个驱动器在操作系统级别约为1 TB。这两个阵列都由5或6个SAS磁盘组成,raid 5中每个磁盘大小为300 GB的10k (或15k不记得了) RPM磁盘。当我们用顺序读写测试操作系统级别的驱动器时,我们可以获得大约3-400 MB \ s的速度,但是在oracle中,我们看到速度以某种方式被限制为4-5 MB \ s。
例如,我们在noarchivelogmode的oracle中运行了此cta,服务器上没有其他负载。该表大小约为4GB,2000万记录,无索引,无分区,无外来数据类型,76列 (1列日期,1列varchar2(256),3列varchar2(1),19列编号 (16,2),其余为数字 (14) )。我们甚至从默认设置存储子句,但没有任何效果。表空间中有大量的可用空间。
创建表inibig
存储 (
初始5G
下一个100M
)
作为从bigtable中选择 *
IOPS约为10-20,吞吐量 \ 带宽始终约为4-5 MB \ s。
我们还使用sql * loader.exe将数据加载到oracle,具有以下选项,以最大限度地提高性能:
直接: 是的
不可恢复: 是
加载方法: 截断
尽管如此,速度还是不能比4 MB \ s快。但是,如果我们并行启动其他负载,它们也将具有4 MB \ s的速度。我们试图调整sqlloader参数 (bindsize和其他),但是无论我们改变了使用sqlloader或cta或任何其他插入方法运行的所有测试,速度都有这4 MB \ s的限制。
数据文件的块大小为16K,multi_block_file_read参数为64。服务器是Windows Server 2008 R2x64,具有8核,72 GB RAM和Oracle is 11R2x64 11.2.0.3.0
如果可能的话,我们感谢您可以给我们提供的任何帮助或建议,以提高吞吐量速度。
谢谢!
我的问题是关于吞吐量 \ band带有问题。
我们有一个数据仓库解决方案,数据库大小约为1 TB,每晚 \ 早上运行时间约为15小时。最佳性能是用户可以在工作日开始时生成每日报告,而不是像现在这样在中午或更晚。
我们看到很多大读取 (90%),全表扫描是典型的负载,因为业务逻辑 (当然,我们也应该优化它,但这是另一个问题),我们有很多cta和直接路径加载来 “绕过” 重做,因此存档日志生成以减少IO (备份不与负载并行运行),在绕过重做优化之前,我们有2-300 GB生成的存档日志,现在只有10-20 GB。我们认为,由于这种类型的操作,我们需要大带宽,而不是在OLTP操作中更重要的大型IOPS。
磁盘系统是一个SAN,高带宽 (16 Gb \ s) FC连接,服务器有2个磁盘阵列,dbf文件驻留 (以及其他用于操作系统和交换文件等的驱动器),两个驱动器在操作系统级别约为1 TB。这两个阵列都由5或6个SAS磁盘组成,raid 5中每个磁盘大小为300 GB的10k (或15k不记得了) RPM磁盘。当我们用顺序读写测试操作系统级别的驱动器时,我们可以获得大约3-400 MB \ s的速度,但是在oracle中,我们看到速度以某种方式被限制为4-5 MB \ s。
例如,我们在noarchivelogmode的oracle中运行了此cta,服务器上没有其他负载。该表大小约为4GB,2000万记录,无索引,无分区,无外来数据类型,76列 (1列日期,1列varchar2(256),3列varchar2(1),19列编号 (16,2),其余为数字 (14) )。我们甚至从默认设置存储子句,但没有任何效果。表空间中有大量的可用空间。
创建表inibig
存储 (
初始5G
下一个100M
)
作为从bigtable中选择 *
IOPS约为10-20,吞吐量 \ 带宽始终约为4-5 MB \ s。
我们还使用sql * loader.exe将数据加载到oracle,具有以下选项,以最大限度地提高性能:
直接: 是的
不可恢复: 是
加载方法: 截断
尽管如此,速度还是不能比4 MB \ s快。但是,如果我们并行启动其他负载,它们也将具有4 MB \ s的速度。我们试图调整sqlloader参数 (bindsize和其他),但是无论我们改变了使用sqlloader或cta或任何其他插入方法运行的所有测试,速度都有这4 MB \ s的限制。
数据文件的块大小为16K,multi_block_file_read参数为64。服务器是Windows Server 2008 R2x64,具有8核,72 GB RAM和Oracle is 11R2x64 11.2.0.3.0
如果可能的话,我们感谢您可以给我们提供的任何帮助或建议,以提高吞吐量速度。
谢谢!
专家解答
我会下载SLOB
https://kevinclosson.net/2012/02/06/introducing-slob-the-silly-little-oracle-benchmark/
它是一个完美的工具,可以准确测量您的存储可以提供多少I/O带宽。
如果使用SLOB只能给您 'n' MB/sec,那么您可以确定这是您的基础架构所能给您的最佳选择。(然后是与您的存储管理员的战斗!)
如果它为您提供了比仓库代码更好的性能,那么它将成为跟踪代码中的问题的一种情况。
但是从SLOB开始
https://kevinclosson.net/2012/02/06/introducing-slob-the-silly-little-oracle-benchmark/
它是一个完美的工具,可以准确测量您的存储可以提供多少I/O带宽。
如果使用SLOB只能给您 'n' MB/sec,那么您可以确定这是您的基础架构所能给您的最佳选择。(然后是与您的存储管理员的战斗!)
如果它为您提供了比仓库代码更好的性能,那么它将成为跟踪代码中的问题的一种情况。
但是从SLOB开始
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




