Pool Conexiones
Pool Conexiones
Pool Conexiones
JDBC
Las conexiones a cualquier medio ( base de datos relacional, sistemas legacy, etc. ) son un recurso caro. Normalmente existe un nmero limitado de conexiones que puede mantener abiertas un determinado servidor, dependiendo de su memoria, su potencia, del sistema al que estamos accediendo, etc.
Programa
Cargar Driver Abrir conexin
Connection
Statement
ResultSet
Obtener objeto Statement Ejecutar sentencias Manejar resultados Cerrar objeto Statement Cerrar conexin
3
Pool de Conexiones
Muchos sistemas que actan como servidores necesitan mantener una gran escalabilidad y por lo tanto no pueden arriesgarse a que se agoten las conexiones. Qu se puede hacer?
Un pool de conexiones soluciona esta problemtica. Se trata de un conjunto limitado de conexiones que se reutilizan constantemente para dar servicio a los diferentes clientes. De este modo se aumenta la escalabilidad y tambin el rendimiento ya que no sera necesario abrir las conexiones constantemente.
Pool de Conexiones
Normalmente un pool de conexiones se inicializa con un nmero de conexiones determinado. Casi todos los servidores modernos traen normalmente pools de conexiones integrados. En un pool de conexiones cada una de estas es utilizada por mltiples clientes diferentes. Los clientes abren la conexin, acceden al servicio a travs de ella y por ltimo cierran dicha conexin. Es importante que el cliente abra y cierre la conexin en cada acceso al servicio ya que si no la cerrase no la estara devolviendo al pool y por lo tanto correramos el riesgo de agotar los recursos del servidor.
Pool de Conexiones El estado inicial de un Pool de conexiones consiste en crear las conexiones fsicas iniciales
Pool de Conexiones
Cuando un Objeto Java del Servidor Java EE requiere una conexin a travs del mtodo dataSource.getConnection(), la fuente de datos javax.sql.DataSource habla con el Pool de conexiones y ste le entrega una conexin lgica java.sql.Connection. Esta conexin lgica finalmente es recibida por el Objeto Java.
Pool de Conexiones
Pool de Conexiones
Cuando un Objeto Java del Servidor Java EE desea cerrar una conexin a travs del mtodo connection.close(), la fuente de datos javax.sql.DataSource habla con el Pool de conexiones y le devuelve la conexin lgica en cuestin.
Configuracin de context.xml
(Carpeta conf de Tomcat)
Configuracin de context.xml
<Resource name="jdbc/DBTest" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username=root" password="avantasia" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test"/>
Configuracin de server.xml
Ventajas
Resultado de un anlisis realizado (www.adictosaltrabajo.com) Para el mismo intervalo de tiempo, un servlet, al usar del pool ha sido capaz de atender 30727 peticiones mientras que sin el pool apenas fue capaz de atender 630 peticiones. En media, el servlet, al usar el pool a logrado atender las peticiones en 1 milisegundo, mientras que sin el uso del pool este tiempo se incrementa a 79 milisegundos. El rendimiento del servlet, al usar el pool ha sido de 6138 peticiones por segundo, mientras que sin el Pool decrece drsticamente a 124 peticiones por segundo.