mensagemTISSxmlns:
ans="http:
//www.ans.gov.br/padroes/tiss/schemas">
-
-
DEMONSTRATIVO_ANALISE_CONTA
1
2007-03-26
16:
33:
46Z
-
123456
-
654321
2.01.01
……
●操作系统物理大小:
32kb
测试步骤如下:
(1)用sys用户创建目录,将该目录上的read、write权限赋予scott用户
代码2-2创建两张测试表格:
C:
>sqlplus“/assysdba”
sql>createdirectoryxmldiras‘d:
/xml/’;
目录已创建。
sql>grantread,writeondirectoryxmldir;
授权成功。
(2)创建两张表格,一张包含XMLTYPE类型,一张为字符串类型,代码如1-3所示:
代码2-3使用scott用户创建两张表格:
sql>connscott/tiger@demo
sql>createtablexml_demo
(
idnumber,
xml_informationxmltype
);
表已创建成功。
Sql>createtablexml_information
(
idnumber,
informationvarchar2(2000)
);
表格创建成功。
(3)插入字符串列的表格测试结果:
代码2-4将数据插入到xml_information测试
declare
2file_typeutl_file.file_type;
3file_infovarchar2(2000);
4begin_timedate;
5end_timedate;
6
7time_diffnumber;----计算插入数据消耗的时间
8begin
9selectsysdateintobegin_timefromdual;
10
11file_type:
=utl_file.fopen('XMLDIR','demo1.xml','R');
12foriin1..553loop
13utl_file.get_line(file_type,file_info);
14insertintoxml_information
15values(i,file_info);
16
17endloop;
18selectsysdateintoend_timefromdual;
19select(end_time-begin_time)*24*60*60intopfromdual;
20dbms_output.put_line(to_char(begin_time,'yyyy-mm-ddhh24:
mi:
ss'));
21dbms_output.put_line(to_char(end_time,'yyyy-mm-ddhh24:
mi:
ss'));
22
23dbms_output.put_line(‘插入数据消耗时间:
’||time_diff);
24end;
25/
2007-10-2117:
20:
30
2007-10-2117:
20:
30
插入数据消耗时间:
0
(4)将数据插入带XMLTYPE表格测试结果:
代码2-5将数据插入带XMLTYPE表格测试结果
declare
2begin_timedate;
3end_timedate;
4time_diffnumber;
5begin
6selectsysdateintobegin_timefromdual;
7
8insertintoxml_demo
9values(1,xmltype(bfilename('XMLDIR','demo1.xml'),nls_charset_id('AL32UTF8')));
10
11selectsysdateintoend_timefromdual;
12select(end_time-begin_time)*24*60*60intopfromdual;
13dbms_output.put_line(to_char(begin_time,'yyyy-mm-ddhh24:
mi:
ss'));
14dbms_output.put_line(to_char(end_time,'yyyy-mm-ddhh24:
mi:
ss'));
15
16dbms_output.put_line(‘插入数据消耗时间:
’||time_diff));
17
18end;
19/
2007-10-2117:
22:
32
2007-10-2117:
22:
32
插入数据消耗时间:
0
测试结论:
当demo.xml的大小为32kb的时候,将文本文件的数据插入到字符串类型的表格和插入到带XMLTYPE类型的表格的消耗是可忽略的。
测试二:
demo1.xml文件大小为2834k,文本文件行数为48428行
为保证测试的准确性,在测试之前将shared_pool中的数据清空,测试步骤如下:
(1)将demo1.xml数据插入到字符列的xml_information表格中
代码2-6将2834k数据插入到字符串类型的表格中
sql>altersystemflushshared_pool
Systemaltered
declare
2file_typeutl_file.file_type;
3file_infovarchar2(2000);
4begin_timedate;
5end_timedate;
6
7time_diffnumber;
8begin
9selectsysdateintobegin_timefromdual;
10
11file_type:
=utl_file.fopen('XMLDIR','demo1.xml','R');
12foriin1..48428loop
13utl_file.get_line(file_type,file_info);
14insertintoxml_information
15values(i,file_info);
16
17endloop;
18selectsysdateintoend_timefromdual;
19select(end_time-begin_time)*24*60*60intopfromdual;
20dbms_output.put_line(to_char(begin_time,'yyyy-mm-ddhh24:
mi:
ss'));
21dbms_output.put_line(to_char(end_time,'yyyy-mm-ddhh24:
mi:
ss'));
22
23dbms_output.put_line(‘插入数据消耗时间:
’||time_diff));
24end;
25/
2007-10-2117:
55:
13
2007-10-2117:
55:
17
插入数据消耗时间为:
4
(2)将demo1.xml数据插入到带XMLTYPE类型表格xml_demo中
代码2-7将2834k数据插入到xml_demo表格中
SQL>altersystemflushshared_pool;
Systemaltered
SQL>declare
2begin_timedate;
3end_timedate;
4time_diffnumber;
5begin
6selectsysdateintobegin_timefromdual;
7
8insertintoxml_demo
9values(1,xmltype(bfilename('XMLDIR','demo1.xml'),nls_charset_id('AL32UTF8')));
10
11selectsysdateintoend_timefromdual;
12select(end_time-begin_time)*24*60*60intopfromdual;
13dbms_output.put_line(to_char(begin_time,'yyyy-mm-ddhh24:
mi:
ss'));
14dbms_output.put_line(to_char(end_time,'yyyy-mm-ddhh24:
mi:
ss'));
15
16dbms_output.put_line(‘插入数据消耗时间:
’||time_diff));
17
18end;
19/
2007-10-2117:
56:
01
2007-10-2117:
56:
02
插入数据消耗时间:
1
PL/SQLproceduresuccessfullycompleted
测试结论:
文本文件的数据达到2M时,插入到XMLTYPE类型表中的数据时间只有插入字符串类型的表格时间的1/4。
测试三:
以变量形式存储
选取一段XML数据保存在变量中,以变量的形式插入数据库,这部分测试主要针对将变量数据插入到表的性能:
带XMLTYPE列的表和字符串数据类型的表。
详见代码2-8:
代码2-8数据以变量插入到带XMLTYPE类型列的表格中
---创建带xmltype列的表格xml_demo(idnumber,xml_informationxmltype)
SQL>createtablexml_demo(idnumber,xml_information);
Tablecreated
SQL>settimingon
SQL>altersystemflushshared_pool;
SQL>declarexml_sqlvarchar2(4000);
2begin
3xml_sql:
='
41973
5FOODWORLD
6MERCHANT
7foodworld@
8
918SALISBURYARCADE
10TACOMA
………
………
150GROCERYMERCHANT
151';
152
153dbms_output.put_line('字符串长度:
'||length(xml_sql));
154insertintoxml_demo
155values(1,xmltype(xml_sql));
156
157end;
158/
字符串长度:
3731
PL/SQLproceduresuccessfullycompleted
Executedin0.231seconds
SQL>
下面是用字符串数据类型进行测试:
代码2-9数据以变量形式插入到字符串类型列的表格中
---创建字符串类型的表格
SQL>createtabletest(informationvarchar2(4000);
Tablecreated
SQL>altersystemflushshared_pool;
Systemaltered
SQL>declarexml_sqlvarchar2(4000);
2begin
3xml_sql:
='
41973
5FOODWORLD
6MERCHANT
7foodworld@
8
149