Aqua Platinum Shoe Womens Running CMTR RN NIKE Free Light 2017 Pure v84Fqw Aqua Platinum Shoe Womens Running CMTR RN NIKE Free Light 2017 Pure v84Fqw Aqua Platinum Shoe Womens Running CMTR RN NIKE Free Light 2017 Pure v84Fqw Aqua Platinum Shoe Womens Running CMTR RN NIKE Free Light 2017 Pure v84Fqw Aqua Platinum Shoe Womens Running CMTR RN NIKE Free Light 2017 Pure v84Fqw

Aqua Platinum Shoe Womens Running CMTR RN NIKE Free Light 2017 Pure v84Fqw

RECU-0218 (Recurso Referencia)

Descripción

Un pool de conexiones es un conjunto limitado de conexiones a una base de datos, que es manejado por un servidor de aplicaciones de forma tal, que dichas conexiones pueden ser reutilizadas por los diferentes usuarios. Este pool es administrado por un servidor de aplicaciones que va asignando las conexiones a medida que los clientes van solicitando consultas o actualizaciones de datos.

Cuando nuestra aplicación trabaja con bases de datos, lo que se realiza básicamente es obtener una conexión, realizar consultas o operaciones SQL y por último cerrar la conexión. El problema estriba en que las conexiones a bases de datos son limitadas en número y además suponen un coste de procesador abrirlas y cerrarlas.

Pure Shoe Free NIKE 2017 Light Platinum RN CMTR Aqua Womens Running Se puede evitar este sobre coste manteniendo conexiones persistentes, pero supone un gran problema para las aplicaciones web que trabajan con múltiples usuarios en un mismo instante. Ya que podemos saturar al servidor de bases de datos. La cantidad de conexiones abiertas a una base de datos es limitada, dado que consumen muchos recursos del servidor de base de datos, y se requiere memoria y tiempo del procesador por cada nueva conexión.

El pool lo que hace es mantener y gestionar un numero de conexiones físicas, que se irán reutilizando automáticamente para aumentar la eficiencia. De esta forma cuando creamos una nueva conexión desde nuestra aplicación, lo que obtenemos es una conexión lógica gestionada por el pool, y al cerrarla lo que hacemos es devolverla a dicho pool. A su vez el pool es capaz de ofrecer múltiples conexiones lógicas utilizando un reducido numero de conexiones reales. El manejo de un pool favorece la escalabilidad y el rendimiento de una aplicación.

Proceso básico de funcionamiento de un pool de conexiones

Los pasos siguientes describen cómo obtener una conexión de un UCP (unidad central de proceso) sobre un pool de conexiones JDBC habilitado fuente de datos para poder acceder a una base de datos.

  • Se usa la UCP para la fábrica de origen de datos JDBC (oracle.ucp.jdbc.PoolDataSourceFactory) para obtener una instancia del pool habilitada para el origen de datos utilizando el método de getPoolDataSource. La instancia de origen de datos debe ser del tipo de PoolDataSource. Por ejemplo:
PoolDataSource PDS = PoolDataSourceFactory.getPoolDataSource ();
  • Se establecen las propiedades de conexión que se requieren para obtener una conexión física a una base de datos. Estas propiedades se establecen en la instancia de origen de datos, e incluyen: la dirección, el nombre de usuario y contraseña para conectarse a la base de datos y la factoría de conexión utilizado para obtener la conexión física. Estas propiedades son específicas de un controlador JDBC y la base de datos. Por ejemplo:
pdsCaterpillar Caterpillar Dougald Shoe Mens Mens Sand 67Z5wqZO.setConnectionFactoryClassName ( "oracle.jdbc.pool.OracleDataSource"); 
pds.setURL ( "jdbc: oracle: thin: @ / / localhost: 1521/XE");
pds.setUser ( "");
pds.setPassword ( "");
  • Establezca todas las propiedades del pool con el fin de anular el comportamiento predeterminado del grupo de conexión. Las propiedades del pool se establecen en la instancia de origen de datos. Por ejemplo:
pds.setInitialPoolSize (5Womens Light NIKE Pure Platinum RN Aqua Free CMTR 2017 Running Shoe );
  • Obtener una conexión utilizando la instancia de origen de datos. La conexión devuelta es una consecuencia lógica de manejar a una conexión física en el pool de la conexión de la fuente de datos. Por ejemplo:
Connection conn = pds.getConnection ();
  • Utilice la conexión para realizar un trabajo sobre la base de datos:
Statement stmt = conn.createStatement (); 
stmt.execute ( "SELECT * FROM foo");
  • Cerrar la conexión y regresar al pool.
conn.close ();

Buenas prácticas y recomendaciones de uso

A continuación se proporcionan una serie de recomendaciones para configurar las propiedades de agrupación de conexiones con el fin de optimizar la puesta en común de comportamiento. Tras su creación, los conjuntos de conexiones JDBC son preconfigurados con la configuración por defecto. La configuración por defecto proporciona un aspecto general al pool de conexión.

Sin embargo, las diferentes aplicaciones pueden tener requisitos de conexión de bases de datos diferentes y puede que desee modificar el comportamiento predeterminado de la agrupación de conexiones. Comportamientos, como el tamaño del pool y tiempos de espera de conexión se pueden configurar y puede mejorar el desempeño general del grupo de conexión, así como la disponibilidad de conexión. En muchos casos, la mejor forma de afinar un pool de conexiones para una aplicación específica es intentar diferentes combinaciones de las propiedades utilizando diferentes valores hasta conseguir un rendimiento óptimo

Propiedades de configuración del Pool de Conexión

Las propiedades del pool de conexión se establecen ya sea al obtener una conexión a través de un pool habilitada para datos de origen o cuando se crea una agrupación de conexiones utilizando el administrador del pool de conexión.

El siguiente ejemplo muestra cómo establecer las propiedades de agrupación de conexiones a través de un pool habilitado para origen de datos:

PoolDataSource  pds = PoolDataSourceFactory.getPoolDataSource(); PoolDataSource PDS = PoolDataSourceFactory.getPoolDataSource ();

pds.setConnectionPoolName("JDBC_UCP"); pds.setConnectionPoolName ( "JDBC_UCP");
pds.setMinPoolSize(4);pds.setMaxPoolSize(20); pds.setMinPoolSize (4); pds.setMaxPoolSize (20);
... ...

El siguiente ejemplo muestra cómo establecer las propiedades de agrupación de conexiones cuando se crea una agrupación de conexiones con el gestor de la agrupación de conexión:

UniversalConnectionPoolManager mgr = UniversalConnectionPoolManagerImpl. Gestor UniversalConnectionPoolManager = UniversalConnectionPoolManagerImpl.

getUniversalConnectionPoolManager(); getUniversalConnectionPoolManager ();
pds.setConnectionPoolName("JDBC_UCP"); pds.setConnectionPoolName ( "JDBC_UCP");
pds.setMinPoolSize(4);pds.setMaxPoolSize(20Platinum Running RN Aqua NIKE 2017 Pure Womens CMTR Light Free Shoe ); pds.setMinPoolSize (4); pds.setMaxPoolSize (20);
... ...

mgr.createConnectionPool(pds); mgr.createConnectionPool (PDS);

Las propiedades del pool de conexiones se pueden establecer en cualquier orden y se puede cambiar dinámicamente en tiempo de ejecución. Por ejemplo, setMaxPoolSize podría cambiar después de que el pool se ha creado y el pool reconoce el nuevo valor y se adapta en consecuencia.

Controlar el tamaño del Pool

Los conjuntos de conexiones JDBC incluyen un conjunto de propiedades que se utilizan para controlar el tamaño del pool. Se permite que el número de conexiones en el pool sea dinámico para aumentar y disminuir a medida que aumenta la demanda y disminuye. Este comportamiento dinámico ayuda a conservar los recursos del sistema que en otro caso se pierden en el mantenimiento de las conexiones innecesarias.

Ajuste el tamaño del grupo inicial

El tamaño del grupo inicial de la propiedad especifica el número de conexiones disponibles que se crean cuando la agrupación de conexiones es inicialmente creada o se reinicializa. Esta propiedad se utiliza normalmente para reducir el tiempo de arranque necesario para el purgado del pool a su tamaño óptimo.

Un valor de cero indica que no hay conexiones creadas previamente. El valor predeterminado es cero. El siguiente ejemplo muestra la configuración de un tamaño de grupo inicial:

pds.setInitialPoolSize(Running Light Womens RN 2017 CMTR Aqua Free Platinum Shoe NIKE Pure 5);

Si el tamaño del grupo inicial es mayor que el máximo tamaño del pool, sólo el número máximo de conexiones son inicializadas. En el caso que tamaño del grupo inicial de la propiedad es menor que el mínimo tamaño del pool, sólo el número inicial de las conexiones son inicializadas y se mantienen hasta que se crean conexiones suficientes para cumplir con el mínimo valor de tamaño del pool.

Ajuste el tamaño mínimo del pool

El tamaño mínimo del pool especifica la cantidad mínima de las conexiones disponibles y prestadas que un grupo mantiene. Un grupo de conexiones siempre trata de volver al tamaño mínimo especificado a menos que la cantidad mínima aún no se ha alcanzado. Por ejemplo, si el límite mínimo se establece en diez y sólo dos conexiones se han creado y prestado, entonces el número de conexiones que mantiene el pool permanece en dos.

Esta propiedad permite que el número de conexiones del pool disminuya a medida que disminuye la demanda. Al mismo tiempo, la propiedad se asegura de que los recursos del sistema no se desperdician en el mantenimiento de las conexiones que son innecesarias. El valor predeterminado es cero. El siguiente ejemplo muestra la configuración de un pool de tamaño mínimo:

pds.setMinPoolSize(2);
Establecer el tamaño máximo de Pool

NIKE Running Aqua Platinum Free Shoe Womens RN CMTR 2017 Light Pure El tamaño máximo especifica el número máximo de las conexiones que mantiene un pool. Si se toman prestadas el número máximo de conexiones, las conexiones no estarán disponibles hasta que una conexión se devuelve al pool.

Esta propiedad permite que el número de conexiones en el pool aumente a medida que aumenta la demanda. Al mismo tiempo, la propiedad asegura que el pool no crezca hasta el punto de agotar los recursos de un sistema, que en última instancia, afecta al rendimiento de una aplicación y disponibilidad.

Un valor de cero indica que no hay conexiones gestionada por el pool. Un intento de obtener un resultado de conexión en esta situación, es una excepción. El siguiente ejemplo muestra la configuración del tamaño máximo del grupo:

pds.setMaxPoolSizeCMTR 2017 Aqua NIKE Shoe Running Light Womens Platinum Free RN Pure (100);

Control de conexiones

Las conexiones que quedan obsoletas pueden afectar a la disponibilidad de conexión. Es necesario hacer un esfuerzo por cerrarlas, porque de otro modo se pueden desperdiciar conexiones no utilizadas por largos períodos de tiempo. Las propiedades del pool que se muestran en esta sección se utilizan para controlar las conexiones.

Es una buena práctica para cerrar todas las conexiones que ya no son necesarias para una aplicación. Las conexiones de cierre ayudan a minimizar el número de conexiones que quedan obsoletas pero continúan prestadas. Las principales características a configurar:

  • Configuración de reutilización de la conexión Se configuran las características para poder reutilizar una conexión. Cuando supera un numero de reutilizaciones, se elimina del pool.
  • Tiempo máximo de reutilización Permite controlar el tiempo necesario para que una conexión pueda volver a ser reutilizada. Mantiene como ocupadas, conexiones dentro del pool hasta que superan el tiempo estipulado
  • NIKE Running Aqua Light Womens Shoe Pure CMTR Free 2017 RN Platinum Tiempo de espera para considerar una conexión abandonada El tiempo de espera que se permite a los abandonados para recuperar la conexión de nuevo en el grupo de conexión después de que una conexión no ha sido utilizado por un importe específico de tiempo.
  • Ajuste del Tiempo de espera de conexión El tiempo de espera que una solicitud de conexión específica espera para obtener una conexión, si ya no hay ninguna conexión en el pool. La solicitud recibe una excepción si se alcanza el valor de tiempo de espera. Esta característica mejora la usabilidad de tiempo de espera global de la aplicación, minimizando la cantidad de tiempo que una aplicación está bloqueada y ofrece la capacidad de implementar una recuperación.
  • Ajuste del tiempo de espera de conexión inactiva Especifica el tiempo que una conexión disponible puede permanecer inactiva antes de que se cierre y se retire del pool. Esta propiedad de tiempo de espera sólo es aplicable a las conexiones disponibles y no afecta a las conexiones que estén prestadas.

Ejemplos

Un ejemplo básico de la conexión completo sería el siguiente.

import java.sql.Connection;
import java.sql.SQLException;
Free Platinum Aqua Womens Pure Shoe RN NIKE Running CMTR Light 2017 import java.sql.Statement;
import oracle.ucp.jdbc.PoolDataSourceFactory;
Platinum Light RN Free NIKE Running Womens Shoe CMTR Aqua 2017 Pure import oracle.ucp.jdbcPlatinum 2017 Light Running CMTR Womens Aqua Shoe Pure NIKE RN Free .PoolDataSource;

public class BasicConnectionExample {
   public static void main(String args[]) Light Aqua Free RN Running Platinum CMTR Womens 2017 NIKE Shoe Pure throws SQLException {
      try
      {
         //Crea la instancia con el pool.
        
         PoolDataSource  pds = PoolDataSourceFactory.getPoolDataSource();
        
         //introduce las condiciones de la conexión.
        
         pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
         pds.setURL("jdbc:oracle:thin:@//localhost:1521/XE");
         pds.setUser("");
         pds.setPassword("");    
        
         //Pripiedades del pool.
        
         pds.setInitialPoolSize(5CMTR RN Pure Free 2017 Platinum Aqua Light NIKE Shoe Womens Running );
        
         //Obtener la conexión con la base de datos.
Str Tubular BY3630 Black adidas Black Invader Str BY3630 adidas Tubular Invader Wq6wxT84        
         Connection conn = pds.getConnection();
        
         System.out.printlnCognac Mens Boot Rockport Wingtip Leather Wingtip Wingtip Cognac Mens Rockport Leather Wyat Wyat Boot Boot Wyat Mens Rockport wBHqAz("\nConnection obtained from " +
          "UniversalConnectionPool\n");
        
Aqua Running RN NIKE Platinum 2017 CMTR Shoe Womens Free Light Pure
         //se ejecutan las operaciones con las bases de datos
         Statement stmt = conn.createStatement Free Light Aqua NIKE Running Platinum Womens CMTR 2017 RN Shoe Pure ();
         stmt.execute("select * from foo");
        
         //Se cierra la conexion.
        
         conn.close();
         conn=null;
        
         System.out.println("Connection returned to the " +
          "UniversalConnectionPool\n");
        
      }
      catch(SQLException e)
      {
         System.out.println("BasicConnectionExample - " +
          "main()-SQLException occurred : "
              + e.getMessage());
      }
   }
}