En 10g, Oracle agrega una nueva función, DBMS_UTILITY.GET_CPU_TIME() que sirve para saber la cantidad de CPU que es utilizada entre dos puntos de un determinado proceso.
En nuestro primer ejemplo vamos a ver la utilización de éstas 2 funciones sin acceder a disco, y luego, vamos a acceder a disco y vamos a ver la diferencia que se genera tanto en tiempo de CPU como de procesamiento:
Ejemplo SIN I/0 a disco:
SQL_10gR1> DECLARE
2
3 l_inicio_1 PLS_INTEGER ;
4 l_inicio_2 PLS_INTEGER ;
5 l_fin_1 PLS_INTEGER ;
6 l_fin_2 PLS_INTEGER ;
7
8 BEGIN
9
10 l_inicio_1 := DBMS_UTILITY.GET_TIME() ;
11 l_inicio_2 := DBMS_UTILITY.GET_CPU_TIME() ;
12
13 FOR i IN 1 .. 99999999 LOOP
14 NULL ;
15 END LOOP ;
16
17 l_fin_1 := DBMS_UTILITY.GET_TIME() - l_inicio_1 ;
18 l_fin_2 := DBMS_UTILITY.GET_CPU_TIME() - l_inicio_2 ;
19
20 DBMS_OUTPUT.PUT_LINE( 'GET_TIME = ' || l_fin_1 || ' hsecs.' ) ;
21 DBMS_OUTPUT.PUT_LINE( 'GET_CPU_TIME = ' || l_fin_2 || ' hsecs.' ) ;
22
23 END ;
24 /
GET_TIME = 1820 hsecs.
GET_CPU_TIME = 1692 hsecs.
PL/SQL procedure successfully completed.
Ejemplo CON I/0 a disco:
SQL_10gR1> CREATE TABLE test AS
2 SELECT level id
3 FROM dual
4 CONNECT BY level <= 10000000 ;
Table created.
SQL_10gR1> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'TEST') ;
PL/SQL procedure successfully completed.
SQL_10gR1> DECLARE
2
3 l_inicio_1 PLS_INTEGER ;
4 l_inicio_2 PLS_INTEGER ;
5 l_fin_1 PLS_INTEGER ;
6 l_fin_2 PLS_INTEGER ;
7
8 BEGIN
9
10 l_inicio_1 := DBMS_UTILITY.GET_TIME() ;
11 l_inicio_2 := DBMS_UTILITY.GET_CPU_TIME() ;
12
13 FOR i IN ( SELECT * FROM test ) LOOP
14 NULL ;
15 END LOOP ;
16
17 l_fin_1 := DBMS_UTILITY.GET_TIME() - l_inicio_1 ;
18 l_fin_2 := DBMS_UTILITY.GET_CPU_TIME() - l_inicio_2 ;
19
20 DBMS_OUTPUT.PUT_LINE( 'GET_TIME = ' || l_fin_1 || ' hsecs.' ) ;
21 DBMS_OUTPUT.PUT_LINE( 'GET_CPU_TIME = ' || l_fin_2 || ' hsecs.' ) ;
22
23 END ;
24 /
GET_TIME = 7884 hsecs.
GET_CPU_TIME = 7741 hsecs.
PL/SQL procedure successfully completed.
1 comentario:
Buenos días Leonardo,
Quisiera saber que estrategia mediante PL/SQL puedo utilizar para que dada una cadena de texto busque en otra tabla la mas parecida a la cadena recibida.
Salu2,
Javier Rey
Publicar un comentario