En el druida agrupación de conexiones de base de datos (springboot)

principio de base de datos de parte de la piscina

Papel: La idea básica es la agrupación de conexiones cuando se inicializa el sistema, la conexión a la base de datos se almacena como objetos en la memoria cuando las necesidades de los usuarios para acceder a la base de datos, no el establecimiento de una nueva conexión, pero inactiva quitar estableció una conexión de la agrupación objeto de conexión . Después de su uso, el usuario no es la conexión está cerrada, pero la parte posterior conexión a la agrupación de conexión a utilizar para la solicitud de acceso siguiente. El establecimiento de la conexión, desconexión por la agrupación de conexiones para gestionar misma . Mientras tanto, el número inicial también puede ser controlado mediante el establecimiento de los parámetros del grupo de conexión del grupo de conexión, el número mínimo de conexiones y el número máximo de uso de cada conexión, por lo que el tiempo máximo de inactividad. Pueden ser controlados por un número de su propia base de datos de gestión de la conexión mecanismo, el uso y similares.

Los principales factores de influencia:

  1. El número mínimo de conexiones a
    la agrupación de conexiones de base de datos se ha mantenido, por lo que si la cantidad de la aplicación a la base de datos no está conectado, habrá un gran número de recursos de conexión de base de datos se pierden.
  2. El número máximo de conexiones
    es puede aplicar el número máximo de grupos de conexión, si las solicitudes de conexión de base de datos superior a este número, la solicitud de conexión de base de datos que se añaden más tarde para la cola de espera, lo que afectará a las operaciones de base de datos subsiguientes.
  3. El número mínimo de conexiones y el número máximo de conexiones brecha
    número mínimo de conexiones y el número máximo de conexiones que hay mucha diferencia, entonces la solicitud de conexión será el primero en ganancias, después de más de un número mínimo de conexiones equivalentes a una solicitud de conexión para establecer una conexión con la base de datos nueva. Sin embargo, éstos mayor que el número mínimo de conexiones no se termine de utilizar la conexión a la base se libera inmediatamente, se coloca en el grupo de conexión después de esperar el tiempo de espera de inactividad reutilizado o liberado.

Configuración de la base de datos springboot la piscina druida

Artículo de referencia:
(más detallados)

Utilizando la base de datos Oracle: https://blog.csdn.net/shmily_lsl/article/details/88035791

En primer lugar, dependiente de las importaciones:

<!-- 阿里系的Druid依赖包 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>
        <!-- Druid 依赖 log4j包 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

application.yml perfil

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
      username: root
      password: root
      driver: com.mysql.cj.jdbc.Driver
      initial-size: 10
      max-active: 10000
      min-idle: 2
      max-wait: 6000
      time-between-eviction-runs-millis: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      #  是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
      pool-prepared-statements: false
      validation-query: select 1 from dual
      validation-query-timeout: 100000
      # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 建议false
      test-on-borrow: false
      # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 ,建议false
      test-on-return: false
      test-while-idle: true
      max-pool-prepared-statement-per-connection-size: 20
      filters: stat

DBDruidConfig

@Configuration
public class DBDruidConfig {

    private static Logger logger = LogManager.getLogger(DBDruidConfig.class);

    @Value("${spring.datasource.druid.url}")
    private String dbUrl;

    @Value("${spring.datasource.druid.username}")
    private String username;

    @Value("${spring.datasource.druid.password}")
    private String password;

    @Value("${spring.datasource.druid.driver}")
    private String driverClassName;

    @Value("${spring.datasource.druid.initial-size}")
    private int initialSize;

    @Value("${spring.datasource.druid.min-idle}")
    private int minIdle;

    @Value("${spring.datasource.druid.max-active}")
    private int maxActive;

    @Value("${spring.datasource.druid.max-wait}")
    private long maxWait;

    @Value("${spring.datasource.druid.timeBetweenEvictionRunsMillis}")
    private long timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.druid.minEvictableIdleTimeMillis}")
    private long minEvictableIdleTimeMillis;

    @Value("${spring.datasource.druid.validation-query}")
    private String validationQuery;

    @Value("${spring.datasource.druid.validation-query-timeout}")
    private int validationQueryTimeout;

    @Value("${spring.datasource.druid.test-while-idle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.druid.test-on-borrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.druid.test-on-return}")
    private boolean testOnReturn;

    @Value("${spring.datasource.druid.pool-prepared-statements}")
    private boolean poolPreparedStatements;

    @Value("${spring.datasource.druid.filters}")
    private String filters;

    /*
    meger操作
    @Value("{spring.datasource.connectionProperties}")
    private String connectionProperties;*/

    @Bean(name = "druidDataSource")     //声明其为Bean实例
    @Primary  //在同样的DataSource中,首先使用被标注的DataSource
    public DruidDataSource dataSource(){
        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(this.dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);

        //configuration
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setValidationQueryTimeout(validationQueryTimeout);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {
            logger.error("druid configuration initialization filter", e);
        }
        //datasource.setConnectionProperties(connectionProperties);

        return datasource;
    }

    @Bean
    public ServletRegistrationBean statViewServlet(){
        //创建servlet注册实体
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //设置ip白名单
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //设置ip黑名单
        servletRegistrationBean.addInitParameter("deny","192.168.0.2");
        //设置控制台管理用户__登录用户名和密码
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否可以重置数据
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }
}

Después de ejecutar el proyecto, visite http: // localhost: 8080 / druida / sql.html,

Aquí Insertar imagen Descripción

Introduzca su nombre de usuario y contraseña en él

Aquí Insertar imagen Descripción
Fuente: https://github.com/jiaojiaoyow/mybatis-pool.git

Publicado 36 artículos originales · ganado elogios 11 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/s_xchenzejian/article/details/97132507
Recomendado
Clasificación