Page 1

UNIVERSIDAD MAYOR DE SAN ANDRES Facultad de Ciencias Puras y Naturales Postgrado en Informática Bases de Datos Avanzada

Comparación del Rendimiento de MS SQL Server, ORACLE y PostgreSQL para Consultas de Diversa Complejidad en Tablas Relacionadas de Miles de Filas Proyecto Final

Presentado a: M. Sc. Sandro Martínez F. Presentado por: Ing. Roger Saravia A.

LP, Bolivia – Diciembre de 2007


Resumen En este trabajo de investigación se desarrolla una comparación pormenorizada de los tiempos de respuesta de tres importantes sistemas gestores de bases de datos como: Microsoft SQL Server, ORACLE y PostgreSQL, a consultas de diverso grado de dificultad en tablas de miles de filas correspondientes a una base de datos relacional. En principio, se hace el planteamiento del problema. Luego, se hace una revisión esencial (breve) del marco teórico sobre lo que son las bases de datos relacionales y sobre las características principales de estos gestores. Posteriormente, se tabulan y grafican detalladamente los resultados de las pruebas de medición de tiempos de consulta para los tres sistemas gestores de bases de datos citados. Se hace un estudio independiente por cada gestor pero también se hace una comparación de los tres gestores por cada tipo de consulta. Al final, se presentan las conclusiones más importantes.

PALABRAS CLAVE BASES DE DATOS RELACIONALES, CONSULTAS, DISPARADORES, FILAS, FUNCIONES DEFINIDAS POR EL USUARIO, GESTORES DE BASES DE DATOS, ORDENAMIENTO, PL/SQL, PROCEDIMIENTOS ALMACENADOS, PRUEBAS DE RENDIMIENTO, SQL, SQL SERVER, ORACLE, POSTGRESQL, TRANSACT SQL, VISTAS


Índice

1

INTRODUCCIÓN......................................................................................................................................................... 2

2

DESCRIPCIÓN DEL PROBLEMA ............................................................................................................................ 2

3

OBJETIVOS ESPECÍFICOS....................................................................................................................................... 2

4

MARCO TEÓRICO (SÍNTESIS) ................................................................................................................................ 2 4.1 4.2 4.3 4.4

5

DESARROLLO PRÁCTICO....................................................................................................................................... 5 5.1 5.2 5.3 5.4 5.5 5.6 5.6.1 5.6.2 5.7 5.7.1 5.7.2 5.8 5.8.1 5.8.2 5.9 5.9.1 5.9.2 5.9.3

6

BASES DE DATOS RELACIONALES ........................................................................................................................... 2 GESTOR MICROSOFT SQL SERVER ......................................................................................................................... 3 GESTOR ORACLE XE............................................................................................................................................ 3 GESTOR POSTGRESQL............................................................................................................................................ 4

PLATAFORMA HARDWARE ...................................................................................................................................... 5 PLATAFORMA SOFTWARE ....................................................................................................................................... 5 DESCRIPCIÓN DEL JUEGO DE DATOS ....................................................................................................................... 5 DEFINICIÓN DEL GRADO DE COMPLEJIDAD DE LAS CONSULTAS ............................................................................. 6 PREPARACIÓN PARA LAS PRUEBAS DE RENDIMIENTO ............................................................................................. 7 RESULTADO DE LAS PRUEBAS DE RENDIMIENTO PARA SQL SERVER: CONSULTAS DE DIVERSA COMPLEJIDAD ..... 8 Tablas de Lecturas de Tiempos ......................................................................................................................... 9 Gráfica Comparativa ........................................................................................................................................ 9 RESULTADO DE LAS PRUEBAS DE RENDIMIENTO PARA ORACLE: CONSULTAS DE DIVERSA COMPLEJIDAD........ 10 Tablas de Lecturas de Tiempos ....................................................................................................................... 11 Gráfica Comparativa ...................................................................................................................................... 11 RESULTADO DE LAS PRUEBAS DE RENDIMIENTO PARA POSTGRESQL: CONSULTAS DE DIVERSA COMPLEJIDAD . 12 Tablas de Lecturas de Tiempos ....................................................................................................................... 13 Gráfica Comparativa ...................................................................................................................................... 13 GRAFICAS COMPARATIVAS POR TIPO DE CONSULTA ............................................................................................ 15 Consulta de Grado de Complejidad Simple .................................................................................................... 15 Consulta de Grado de Complejidad Media..................................................................................................... 16 Consulta de Grado de Complejidad Alta ........................................................................................................ 17

CONCLUSIONES ....................................................................................................................................................... 18

REFERENCIAS.................................................................................................................................................................... 19 APÉNDICES ......................................................................................................................................................................... 19 A

CÓDIGO PREPARATORIO PL/SQL PARA LAS PRUEBAS DE RENDIMIENTO EN ORACLE ................ 19 A.1 A.2

CREACIÓN DE LAS TABLAS Y RELACIONES ........................................................................................................... 19 PROCEDIMIENTOS ALMACENADOS ....................................................................................................................... 22

1


1

Introducción El escenario de este proyecto se extiende en el área de las bases de datos avanzada de las ciencias de la computación; específicamente, en la ramas de bases de datos relacionales y en la administración, operación y programación de tres sistemas gestores de bases de datos profesionales y actualmente establecidos: MS SQL Server, ORACLE y PostgreSQL.

2

Descripción del Problema Un problema identificado con relación a la operación de los citados sistemas gestores de bases de datos, es la carencia de parámetros de tiempos de rendimiento que dichos sistemas ofrecen con relación a una operación tan importante y tan empleada como la consulta (query) de datos. Se pretende abordar dicho problema mediante una comparación metodológica de los tiempos de consulta de estros tres gestores de bases de datos.

3

Objetivos Específicos ƒ

Para SQL Server, ORACLE y PostgreSQL, determinar los tiempos de respuesta a consultas de diverso grado de dificultad realizadas a su vez en distintos miles de filas de tablas de una base de datos relacional.

ƒ

Comparar los tiempos de respuesta de SQL Server, ORACLE y PostgreSQL para cada grado de complejidad de consulta y en función de los miles de filas consultados.

4

Marco Teórico (Síntesis)

4.1

Bases de Datos Relacionales Introducido por el investigador de IBM Edward Codd en 1970 y quien realizó varias investigaciones académicas a lo largo del 70. “E. Codd: ‘A Relational Model for Large Shared Data Banks’; Communications of the ACM; 13, June 1970”. Sus características principales: modelo formal por naturaleza, estructuras de datos simples y uniformes. El modelo relacional se basa en la teoría matemática de conjuntos donde los datos son representados por medio de una colección de relaciones o tablas. Es el modelo más utilizado comercialmente. Actualmente existen varios sistemas gestores de bases de datos relacionales en el mercado cubriendo todas las plataformas de hardware y software.

2


4.2

Gestor Microsoft SQL Server Microsoft® SQL Server™ es un conjunto de componentes que trabajan de manera integrada para satisfacer las necesidades de almacenamiento y análisis de datos de sistemas de procesamiento de datos y sitios Web de calibre empresarial. El motor de base de datos relacional de SQL Server soporta todas las características requeridas para las demandas de ambientes de procesamiento de datos. El motor de la base de datos protege la integridad y a su vez minimiza la sobrecarga al administrar centenares de accesos concurrentes que modifican la base de datos. SQL Server ofrece consultas distribuidas que le permiten a uno hacer referencia a datos de múltiples orígenes pero como si fueran parte de una base de datos SQL Server cuidando al mismo tiempo que las transacciones distribuidas protejan la integridad de cualquier actualización de los datos distribuidos. SQL Server ofrece replicación que permite a uno mantener múltiples copias de datos y a su vez garantiza que las copias separadas permanezcan sincronizadas. Se pueden replicar los juegos de datos hacia múltiples, móviles y hasta usuarios desconectados para que trabajen de manera autónoma, para luego entremezclar apropiadamente sus modificaciones.

4.3

Gestor ORACLE XE ORACLE Database Express Edition (ORACLE XE) es una edición libre de ORACLE Database. ORACLE XE es fácil de instalar y fácil de administrar. ORACLE XE ofrece una interfaz intuitiva basada en el explorador capaz de:

ƒ

Administrar la base de datos.

ƒ

Crear tablas, vistas y otros objetos de bases de datos.

ƒ

Importar, exportar y visualizar datos de tablas.

ƒ

Ejecutar consultas en scripts SQL.

ƒ

Generar reportes.

ORACLE XE también incluye ORACLE Application Express, un ambiente gráfico de desarrollo para crear aplicaciones Web centradas en bases de datos. ORACLE XE también incluye las siguientes utilidades para línea de comando:

ƒ

SQL Command Line (SQL*Plus) para ingresar comandos tanto en SQL como PL/SQL, y para ejecutar scripts.

3


4.4

ƒ

SQL*Loader para cargar datos en la base de datos.

ƒ

Data Pump and the Import and Export utilities para importar y exportar datos.

Gestor PostgreSQL PostgreSQL es un sistema de administración de bases de datos objeto – relacionales basado en POSTGRES V. 4.2, desarrollado en el departamento de ciencias de la computación de la Universidad de California en Berkeley. POSTGRES ha sido siempre pionero en muchos conceptos que estuvieron mucho después disponibles en algunos sistemas comerciales de bases de datos. PostgreSQL es del tipo código abierto y descendiente del código original de Berkeley. Soporta una gran parte del estándar SQL y ofrece muchas características modernas como ser:

ƒ

Consultas complejas.

ƒ

Llaves foráneas.

ƒ

Disparadores.

ƒ

Vistas.

ƒ

Integridad transaccional.

ƒ

Control de concurrencia multi-versión.

PostgreSQL puede ser extendido por el usuario de muchas maneras. añadiendo:

ƒ

Tipos de datos.

ƒ

Funciones.

ƒ

Operadores.

ƒ

Funciones agregadas.

ƒ

Métodos de indexación.

ƒ

Lenguajes procedimentales.

Por ejemplo,

Además, PostgreSQL goza de licencia libre; razón por la cual, puede ser usado, modificado y distribuido por quien quiera de manera libre y fuera de cargo, y para cualquier propósito ya sea académico o comercial.

4


5

Desarrollo Práctico

5.1

Plataforma Hardware La computadora usada en las pruebas de rendimiento se corresponde con las siguientes características:

5.2

5.3

ƒ

Modelo:

Dell Inspiron 6400 - MM061

ƒ

Tipo:

X86-Based PC

ƒ

Procesador: Intel Core 2 Duo

ƒ

Velocidad:

1.828 GHZ x 2

ƒ

RAM:

1 GB

ƒ

Disco Duro:

150 GB (ATA)

Plataforma Software ƒ

Sistema operativo instalado:

MS Windows XP Pro - SP2

ƒ

Gestor de BD instalado:

MS SQL Server 2005

ƒ

Gestor de BD instalado:

ORACLE 10g XE

ƒ

Gestor de BD instalado:

PostgreSQL 8.2.5

Descripción del Juego de Datos La base de datos usada para las pruebas de rendimiento se compone de 6 tablas relacionadas de acuerdo al detalle siguiente:

Tablas

ELEMENTO

(codele, tipoe, codprop, fix, fiy, fiz, codnudini, codnudfin)

PROPIEDADES

(codprop, elasticidad, inercia, area)

CARGELEM

(codce, tipo, inicio, longitud, fx, fy, mz, codele)

5


NUDO

(codnud, tiponu, x, y, codbor, dx, dy, gz, rx, ry, rz)

CARGNUD

(codcn, px, py, pz, codnud)

BORDE

(codbor, borx, bory, borz)

Nota: Los campos con letra cursiva vienen a ser las llaves foráneas.

Comentario: En la práctica, esta base de datos relacional puede ser usada para el almacenamiento de toda la configuración de las estructuras planas o marcos planos del área de ingeniería civil rama análisis de estructuras.

5.4

Definición del Grado de Complejidad de las Consultas Considerando el número de atributos y relaciones disponibles en la base de datos usada, se ha elaborado la siguiente diferenciación en cuanto a la complejidad de las consultas:

Complejidad

Atributos

“Joins”

Ordenamientos

Dirección

Simple

2

1

1

1 Descendente

Media

4

2

2

1 Ascendente 1 Descendente

Alta

10

5

3

2 Ascendentes 1 Descendente

Por ejemplo, siguiendo la tabla anterior, en Transact SQL del SQL Server, se tendrían las siguientes sentencias SELECT:

Complejidad

Transact SQL

Simple

SELECT TIPOE, MZ FROM ELEMENTO E, CARGELEM C WHERE E.CODELE=C.CODELE ORDER BY E.FIY DESC

6


Media

SELECT DX, RZ, FIZ, MZ FROM NUDO N, ELEMENTO E, CARGELEM C WHERE N.CODNUD=E.CODNUDFIN AND E.CODELE=C.CODELE ORDER BY N.RY, E.FIY DESC

Alta

SELECT PZ, RX, RY, RZ, BORZ, CODNUDINI, CODNUDFIN, AREA, FY, MZ FROM CARGNUD CN, NUDO N, BORDE B, ELEMENTO E, PROPIEDADES P, CARGELEM CE WHERE CN.CODCN=N.CODNUD AND N.CODBOR=B.CODBOR AND N.CODNUD=E.CODNUDINI AND E.CODPROP=P.CODPROP AND E.CODELE=CE.CODELE ORDER BY N.RZ, E.FIZ, CE.MZ DESC

5.5

Preparación para las Pruebas de Rendimiento Para todas las pruebas de rendimiento, se mantuvo el siguiente procedimiento común (para todos los gestores y todas las complejidades):

1) Crear la base de datos. 2) Crear las tablas y las relaciones de la base de datos. 3) Crear los procedimientos que permitan la inserción de miles de filas en las tablas.

7


4) Verificar los resultados de la inserción. 5) Ejecutar las consultas. 6) Tomar los tiempos.

Es importante presentar la siguiente recolección de apuntes con respecto a esta parte de preparación:

ƒ

Todo el procedimiento preparativo y ejecutorio se realizó en SQL; desde la creación de las tablas, la inserción de filas y hasta la consulta de las mismas.

ƒ

Para cada gestor de base de datos se tuvo que hacer las modificaciones al código SQL preparativo y ejecutorio según el dialecto SQL propio de cada gestor.

ƒ

Para la inserción de las filas se tuvo que codificar teniendo mucho cuidado en conservar la integridad referencial de la base de datos.

ƒ

Se ejecutaron las pruebas a intervalos de 30 segundos a fin de evitar el posible efecto de la caché de memoria.

ƒ

En SQL Server, la inserción de 500000 filas en cada una de las 6 tablas de la base de datos, demoró casi 17 minutos.

ƒ

En SQL Server y ORACLE se crearon procedimientos almacenados para la inserción de las miles de filas en las tablas.

ƒ

En PostgreSQL se crearon funciones para la inserción de las miles de filas en las tablas de la base de datos.

ƒ

En ORACLE se trabajó mayormente con la línea de comando.

En el Apéndice A se desarrolla parte del código SQL usado en las pruebas.

5.6

Resultado de las Pruebas de Rendimiento para SQL Server: Consultas de Diversa Complejidad En la mayor parte de los casos, para el cálculo de los promedios de las lecturas de tiempos, se suprimió cualquier lectura del tipo “pico” con relación al resto de las lecturas.

8


5.6.1 Tablas de Lecturas de Tiempos SQL Server - Complejidad Simple (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000 500000

13 63 123 360 640 9830

13 46 110 376 686 3750

16 46 126 373 686 3936

13 46 110 376 720 3843

16 46 106 390 700 3890

14 46 115 375 686 3855

SQL Server - Complejidad Media (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000 500000

156 90 190 590 1500 12813

16 76 186 610 1220 7623

33 93 190 626 1190 8700

16 93 190 606 1220 7356

13 96 186 626 1233 7296

20 90 188 612 1216 7744

Comentario: El valor pico 156 mostrado más arriba fue de sucesiva aparición pese a varios intentos.

SQL Server - Complejidad Alta (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000 500000

96 220 266 1453 3893 39513

63 216 263 1250 3186 27373

60 220 266 1250 3110 26610

63 216 266 1263 3126 27060

63 220 266 1250 3093 28830

62 218 265 1253 3129 27468

5.6.2 Gráfica Comparativa A partir de la generación de una tabla resumen, recién puede elaborarse una gráfica comparativa del tiempo de respuesta para consultas de diversas complejidades versus número de filas.

9


SQL Server - Tabla Comparativa (milisegundos) Filas

C. Simple

C. Media

C. Alta

1000 5000 10000 50000 100000 500000

14 46 115 375 686 3855

20 90 188 612 1216 7744

62 218 265 1253 3129 27468

SQL Server - Grรกfica Comparativa 30000

25000

Milisegundos

20000

15000

10000

5000

0 0

50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Filas C. Simple

5.7

C. Media

C. Alta

Resultado de las Pruebas de Rendimiento para ORACLE: Consultas de Diversa Complejidad Importante:

El gestor ORACLE 10g XE limitaba su uso a 100000 filas.

10


En la mayor parte de los casos, para el cálculo de los promedios de las lecturas de tiempos, se suprimió cualquier lectura del tipo “pico” con relación al resto de las lecturas.

5.7.1 Tablas de Lecturas de Tiempos ORACLE - Complejidad Simple (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000

60 330 590 2610 5240

40 250 520 2510 5090

60 280 500 2500 5080

60 260 500 2500 5020

60 260 510 2520 5090

56 263 508 2528 5070

ORACLE - Complejidad Media (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000

70 390 770 3680 7270

60 370 720 3660 7390

70 370 720 3700 7420

60 390 720 3720 7330

60 370 740 3630 7320

64 378 734 3678 7346

ORACLE - Complejidad Alta (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000

430 780 1440 6720 13970

130 640 1300 6780 15220

140 640 1300 6830 18440

130 640 1290 6670 14040

120 630 1310 6770 14080

130 638 1300 6754 14328

Comentario: Pese a que ORACLE reportó los tiempos tabulados en las tres tablas anteriores, el resultado de las consultas estaba disponible luego de cierto tiempo después. Esto, probablemente se debe al ambiente Web en el cual se despliega la versión ORACLE XE.

5.7.2 Gráfica Comparativa A partir de la generación de una tabla resumen, recién puede elaborarse una gráfica comparativa del tiempo de respuesta para consultas de diversas complejidades versus número de filas.

11


ORACLE - Tabla Comparativa (milisegundos) Filas

C. Simple

C. Media

C. Alta

1000 5000 10000 50000 100000

56 263 508 2528 5070

64 378 734 3678 7346

130 638 1300 6754 14328

ORACLE - Gráfica Comparativa 16000 14000

Milisegundos

12000 10000 8000 6000 4000 2000 0 0

10000

20000

30000

40000

50000

60000

70000

80000

90000 100000

Filas C. Simple

5.8

C. Media

C. Alta

Resultado de las Pruebas de Rendimiento para PostgreSQL: Consultas de Diversa Complejidad En la mayor parte de los casos, para el cálculo de los promedios de las lecturas de tiempos, se suprimió cualquier lectura del tipo “pico” con relación al resto de las lecturas.

12


5.8.1 Tablas de Lecturas de Tiempos PostgreSQL - Complejidad Simple (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000 500000

47 172 312 1625 3047 22844

63 172 313 1625 3047 15625

47 172 312 1516 3047 15187

47 172 313 1516 2937 15187

63 172 312 1516 3047 17156

53 172 312 1560 3025 15789

PostgreSQL - Complejidad Media (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000 500000

78 312 641 3156 6329 39250

78 313 640 3156 6328 32250

94 313 640 3047 6328 32141

94 312 640 3156 6218 32140

79 312 641 3156 6328 32140

85 312 640 3134 6306 32168

PostgreSQL - Complejidad Alta (tiempos en milisegundos) Filas

Lectura 1

Lectura 2

Lectura 3

Lectura 4

Lectura 5

Promedio

1000 5000 10000 50000 100000 500000

141 750 1406 6438 14094 118984

141 641 1297 6438 13656 106078

141 641 1297 6437 14204 116828

140 641 1297 6438 13766 106734

141 641 1297 6547 13656 117453

141 641 1297 6460 13875 113215

Comentario: PostgreSQL presentaba en pantalla los resultados de las consultas de manera inmediata.

5.8.2 Gráfica Comparativa A partir de la generación de una tabla resumen, recién puede elaborarse una gráfica comparativa del tiempo de respuesta para consultas de diversas complejidades versus número de filas.

13


PostgreSQL - Tabla Comparativa (milisegundos) Filas

C. Simple

C. Media

C. Alta

1000 5000 10000 50000 100000 500000

53 172 312 1560 3025 15789

85 312 640 3134 6306 32168

141 641 1297 6460 13875 113215

PostgreSQL - Grรกfica Comparativa 120000

100000

Milisegundos

80000

60000

40000

20000

0 0

50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Filas C. Simple

C. Media

C. Alta

14


5.9

Graficas Comparativas por Tipo de Consulta

5.9.1 Consulta de Grado de Complejidad Simple Consulta de Grado de Complejidad Simple (milisegundos) Filas

SQL Server

ORACLE

PostgreSQL

1000 5000 10000 50000 100000 500000

14 46 115 375 686 3855

56 263 508 2528 5070 25314

53 172 312 1560 3025 15789

Nota: Para propรณsitos comparativos, el valor mostrado en negrillas ha sido extrapolado.

Grรกfica Comparativa - Consulta de Grado de Complejidad Simple 30000

25000

Milisegundos

20000

15000

10000

5000

0 0

50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Filas SQL Server

ORACLE

PostgreSQL

15


5.9.2 Consulta de Grado de Complejidad Media Consulta de Grado de Complejidad Media (milisegundos) Filas

SQL Server

ORACLE

PostgreSQL

1000 5000 10000 50000 100000 500000

20 90 188 612 1216 7744

64 378 734 3678 7346 36738

85 312 640 3134 6306 32168

Nota: Para propรณsitos comparativos, el valor mostrado en negrillas ha sido extrapolado.

Grรกfica Comparativa - Consulta de Grado de Complejidad Media 40000 35000

Milisegundos

30000 25000 20000 15000 10000 5000 0 0

50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Filas SQL Server

ORACLE

PostgreSQL

16


5.9.3 Consulta de Grado de Complejidad Alta Consulta de Grado de Complejidad Alta (milisegundos) Filas

SQL Server

ORACLE

PostgreSQL

1000 5000 10000 50000 100000 500000

62 218 265 1253 3129 27468

130 638 1300 6754 14328 71829

141 641 1297 6460 13875 113215

Nota: Para propรณsitos comparativos, el valor mostrado en negrillas ha sido extrapolado.

Grรกfica Comparativa - Consulta de Grado de Complejidad Alta 120000

100000

Milisegundos

80000

60000

40000

20000

0 0

50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Filas SQL Server

ORACLE

PostgreSQL

17


6

Conclusiones Para consultas de complejidad simple, SQL Server resulta ser el más rápido en el tiempo de respuesta. SQL Server es alrededor de 6.5 veces más rápido que ORACLE y alrededor de 4 veces más rápido que PostgreSQL. Por su parte, PostgreSQL es 1.6 veces más rápido que ORACLE. Para consultas de complejidad media, SQL Server obtiene otro primer lugar en tiempos de respuesta. ORACLE y PostgreSQL no presentan gran diferencia entre sí. SQL Server resulta ser alrededor de 5 veces más rápido que ORACLE y alrededor de 4 veces más rápido que PostgreSQL. Por su parte, PostgreSQL resulta ser 1.1 veces más rápido que ORACLE. Para consultas de complejidad alta, SQL Server vuelve a tomar la delantera. ORACLE queda en segundo lugar y PostgreSQL en tercero. SQL Server tiene una respuesta 2.6 veces más rápida que ORACLE y alrededor de 4 veces más rápida que PostgreSQL. Por su parte, ORACLE responde 1.6 veces más rápido que PostgreSQL. Se podría hacer una apreciación tipo resumen de la siguiente manera:

Complejidad de la consulta

¿Cuántas veces es SQL Server más rápido que ORACLE?

¿Cuántas veces es SQL Server más rápido que PostgreSQL?

Simple

6.5 veces

4 veces

Media

5 veces

4 veces

Alta

2.6 veces

4 veces

Promedio:

4.7 veces

4 veces

Entonces, MS SQL Server resultaría ser el sistema gestor de base de datos más rápido en tiempos de respuesta a consultas de diversas complejidades. Casi 5 veces más rápido que ORACLE y 4 veces más rápido que PostgreSQL.

Y algunas otras conclusiones: En todos los casos (véase todas las gráficas) la tendencia del tiempo de respuesta sigue un comportamiento lineal con relación al número de filas en las tablas. Las consultas más complejas podrían incluir la mayor parte de los atributos disponibles en todas las tablas relacionadas además de exigir también una ordenación por campos. La exigencia de ordenamiento (ORDER BY) por uno o más campos incrementa considerablemente el tiempo de respuesta del gestor.

18


Para un menor número de filas puede apreciarse cifras iguales o muy similares en las lecturas de los tiempos; mientras que, a mayor número de filas se obtienen lecturas desiguales en la mayor parte de los casos. PostgreSQL muestra una mejor constancia con respecto a los tiempos; es decir, en la mayor parte de las lecturas, la diferencia entre las mismas es mínima o bien nula.

Referencias ƒ

MICROSOFT CORPORATION (2000). Microsoft® SQL Server.

ƒ

DIANA LORENTZ (2001). “Oracle9i SQL Reference (9.0.1)”. ORACLE. Estados Unidos.

ƒ

POSTGRESQL GLOBAL DEVELOPMENT GROUP (2007). “PostgreSQL 8.2.5 Documentation”. [En red]. Disponible en: http://www.postgresql.org

ƒ

SANDRO MARTINEZ F. (2007). “Programación avanzada en SQL Server”. Postgrado en Informática. UMSA. LP-BOL.

ƒ

JUDITH PAVON M. (2007). "Bases de Datos". Postgrado en Informática. UMSA. LPBOL.

“SQL Server Books Online“. Disponible en:

Apéndices A

Código Preparatorio PL/SQL para las Pruebas de Rendimiento en ORACLE

A.1 Creación de las Tablas y Relaciones CREATE TABLE ELEMENTO (codele numeric not null, tipoe varchar(15), codprop char(20), fix numeric, fiy numeric, fiz numeric, codnudini numeric,

19


codnudfin numeric, CONSTRAINT PK_ELEMENTO PRIMARY KEY(codele));

CREATE TABLE PROPIEDADES (codprop char(20) not null, elasticidad numeric, inercia numeric, area numeric, CONSTRAINT PK_PROPIEDADES PRIMARY KEY(codprop));

CREATE TABLE CARGELEM (codce numeric not null, tipo varchar(15), inicio numeric, longitud numeric, fx numeric, fy numeric, mz numeric, codele numeric, CONSTRAINT PK_CARGELEM PRIMARY KEY(codce));

CREATE TABLE NUDO (codnud numeric not null, tiponu varchar(15), x numeric, y numeric, codbor numeric, dx numeric, dy numeric, gz numeric, rx numeric, ry numeric, rz numeric, CONSTRAINT PK_NUDO PRIMARY KEY(codnud));

20


CREATE TABLE CARGNUD (codcn numeric not null, px numeric, py numeric, pz numeric, codnud numeric, CONSTRAINT PK_CARGNUD PRIMARY KEY(codcn));

CREATE TABLE BORDE (codbor numeric not null, borx char(10), bory char(10), borz char(10), CONSTRAINT PK_BORDE PRIMARY KEY(codbor));

ALTER TABLE ELEMENTO ADD CONSTRAINT FK1_ELEMENTO FOREIGN KEY (codprop) REFERENCES PROPIEDADES;

ALTER TABLE ELEMENTO ADD CONSTRAINT FK2_ELEMENTO FOREIGN KEY (codnudini) REFERENCES NUDO;

ALTER TABLE ELEMENTO ADD CONSTRAINT FK3_ELEMENTO FOREIGN KEY (codnudfin) REFERENCES NUDO;

ALTER TABLE CARGELEM ADD CONSTRAINT FK_CARGELEM FOREIGN KEY (codele) REFERENCES ELEMENTO;

ALTER TABLE NUDO ADD CONSTRAINT FK_NUDO FOREIGN KEY (codbor) REFERENCES BORDE;

ALTER TABLE CARGNUD ADD CONSTRAINT FK_CARGNUD FOREIGN KEY (codnud) REFERENCES NUDO;

21


A.2 Procedimientos Almacenados Nota: Para la inserciรณn de 1000 filas.

CREATE OR REPLACE PROCEDURE "PRO01" IS I NUMBER; NF NUMBER; BEGIN I:=1; NF:=1000; LOOP INSERT INTO PROPIEDADES VALUES('PR' || CAST(I AS CHAR(10)), I*2, I*3, I*3.5); I:=I+1; EXIT WHEN I>NF; END LOOP; END;

CREATE OR REPLACE PROCEDURE "PRO02" IS NF NUMBER; I NUMBER; BEGIN NF:=1000; I:=1; LOOP INSERT INTO NUDO VALUES(I+10, 'A', I*2, I*3, 1, I*1.5, I*2.5, I*3.5, I*1.8, I*2.8, I*3.8); I:=I+1; EXIT WHEN I>NF; END LOOP;

END;

22


CREATE OR REPLACE PROCEDURE "PRO03" IS NF NUMBER; I NUMBER; BEGIN NF:=1000; I:=1; LOOP INSERT INTO CARGNUD VALUES(I+2, I*1.2, I*1.3, I*1.4, I+10); I:=I+1; EXIT WHEN I>NF; END LOOP;

END;

CREATE OR REPLACE PROCEDURE "PRO04" IS NF NUMBER; I NUMBER; BEGIN NF:=1000; I:=1; LOOP INSERT INTO ELEMENTO VALUES(I+10, 'V', 'PR' || CAST(I AS VARCHAR(5)), I*2.1, I*3.1, I*4.1, I+10, I+10); I:=I+1; EXIT WHEN I>NF; END LOOP; END;

CREATE OR REPLACE PROCEDURE "PRO05" IS NF NUMBER; I NUMBER;

23


BEGIN NF:=1000; I:=1; LOOP INSERT INTO CARGELEM VALUES(I+10, 'P', I*1.1, I*1.2, I*2.1, I*3.1, I*4.1, I+10); I:=I+1; EXIT WHEN I>NF; END LOOP; END;

CREATE OR REPLACE PROCEDURE "PRO06" IS NF NUMBER; I NUMBER; BEGIN NF:=1000; I:=1; LOOP INSERT INTO BORDE VALUES(I+10, 'F', 'L', 'F'); I:=I+1; EXIT WHEN I>NF; END LOOP; END;

24

Comparación del rendimiento de ms sql server, oracle y postgresql para consultas de diversa compleji  
Comparación del rendimiento de ms sql server, oracle y postgresql para consultas de diversa compleji  
Advertisement