问题描述
这真的是一个设计问题,在我们开始编码之前...
该应用程序主要是OLTP,偏向于数据输入。将有一个月末处理周期来处理给定月份的数据。
我们有业务要求以每小时约30,000的速度扫描文档。每次扫描将产生两个图像,在Oracle 12.2企业版中存储一个月。我们刚刚被告知图像大小在25-40k之间,因此存储在外部片段中。30,000图像给出大约17每秒的插入速率。图像不会更新,但可能会被键盘随机引用。前端应用程序是Apex/PLSQL。在某个时候,在不真正了解需求的情况下,有人决定将3节点RAC群集作为平台 (基于Solaris Sparc LDOM的平台)。我们倾向于使用标准的8k块大小。
想知道您是否可以向我指出可能有助于考虑高插入性能的任何文档的方向,以及可能提供相应RAC考虑因素的任何内容 (从概念上讲,我有点担心对缓存的影响)。还有任何你想强调的东西!我可以自己找到有关LOB和RAC的文档,但是在设计注意事项和吞吐量大小方面却有些挣扎。有一个计划,下个月开始一些概念验证类型测试,只是试图预先解决一些可能的问题。
抱歉,如果这是 “错误” 类型的问题,如果是,请随时删除。我只是想在设计阶段考虑一下,以便 [希望] 以后保存问题。
谢谢
罗伯
该应用程序主要是OLTP,偏向于数据输入。将有一个月末处理周期来处理给定月份的数据。
我们有业务要求以每小时约30,000的速度扫描文档。每次扫描将产生两个图像,在Oracle 12.2企业版中存储一个月。我们刚刚被告知图像大小在25-40k之间,因此存储在外部片段中。30,000图像给出大约17每秒的插入速率。图像不会更新,但可能会被键盘随机引用。前端应用程序是Apex/PLSQL。在某个时候,在不真正了解需求的情况下,有人决定将3节点RAC群集作为平台 (基于Solaris Sparc LDOM的平台)。我们倾向于使用标准的8k块大小。
想知道您是否可以向我指出可能有助于考虑高插入性能的任何文档的方向,以及可能提供相应RAC考虑因素的任何内容 (从概念上讲,我有点担心对缓存的影响)。还有任何你想强调的东西!我可以自己找到有关LOB和RAC的文档,但是在设计注意事项和吞吐量大小方面却有些挣扎。有一个计划,下个月开始一些概念验证类型测试,只是试图预先解决一些可能的问题。
抱歉,如果这是 “错误” 类型的问题,如果是,请随时删除。我只是想在设计阶段考虑一下,以便 [希望] 以后保存问题。
谢谢
罗伯
专家解答
良好的... 我2岁的笔记本电脑每秒可以插入大约2,000个45k jpeg
因此,每秒17次插入不会测试任何现代硬件。
RAC的主要好处是可扩展性和可用性。您的需求表明,即使对于最基本的硬件,可扩展性也不是问题,因此最终,您的RAC决策将取决于可用性对您的重要性 (即,生存节点丢失,最小停机时间,滚动维护能力等)。
如果RAC的可用性优势确实符合您的要求,那么LOB处理实际上与RAC下的其他任何东西都没有什么不同,即,您通常可以在不进行任何设计更改的情况下立即获得良好的性能,但是,如果您选择某些RAC特定的应用程序优化 (例如节点亲和力),则可以获得更好的性能,为此已经有很多好的内容。
SQL> create table lob_table 2 (id number, 3 file_name varchar2(45), 4 image blob, 5 tstamp date) 6 lob ( image ) store as securefile; Table created. Elapsed: 00:00:00.00 SQL> SQL> create sequence lob_table_seq cache 1000; Sequence created. Elapsed: 00:00:00.00 SQL> SQL> SQL> create or replace procedure load_tester as 2 l_blob blob; 3 l_file_name lob_table.file_name%type := 'xmas.jpg'; -- 45k file 4 l_bfile bfile := bfilename('TEMP', l_file_name); 5 begin 6 insert into lob_table (id, file_name, image, tstamp) 7 values (lob_table_seq.nextval, l_file_name, empty_blob(), sysdate) 8 returning image into l_blob; 9 dbms_lob.open(l_bfile, dbms_lob.lob_readonly); 10 dbms_lob.open(l_blob, dbms_lob.lob_readwrite); 11 dbms_lob.loadfromfile( 12 dest_lob => l_blob 13 , src_lob => l_bfile 14 , amount => dbms_lob.getlength(l_bfile)); 15 dbms_lob.close(l_blob); 16 dbms_lob.close(l_bfile); 17 commit; 18 end; 19 / Procedure created. Elapsed: 00:00:00.02 SQL> SQL> set timing on SQL> begin 2 for i in 1 .. 20000 3 loop 4 load_tester; 5 end loop; 6 end; 7 / PL/SQL procedure successfully completed. Elapsed: 00:00:10.91复制
因此,每秒17次插入不会测试任何现代硬件。
RAC的主要好处是可扩展性和可用性。您的需求表明,即使对于最基本的硬件,可扩展性也不是问题,因此最终,您的RAC决策将取决于可用性对您的重要性 (即,生存节点丢失,最小停机时间,滚动维护能力等)。
如果RAC的可用性优势确实符合您的要求,那么LOB处理实际上与RAC下的其他任何东西都没有什么不同,即,您通常可以在不进行任何设计更改的情况下立即获得良好的性能,但是,如果您选择某些RAC特定的应用程序优化 (例如节点亲和力),则可以获得更好的性能,为此已经有很多好的内容。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
572次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
531次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
435次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
429次阅读
2025-04-08 09:12:48
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
427次阅读
2025-04-22 00:20:37
墨天轮个人数说知识点合集
JiekeXu
427次阅读
2025-04-01 15:56:03
Oracle SQL 执行计划分析与优化指南
Digital Observer
424次阅读
2025-04-01 11:08:44
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
403次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
391次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
363次阅读
2025-04-08 23:57:08