DBCP连接及MySQL优化

一:数据库连接池的原理
数据库连接池保存了一些数据库连接对象(Connection对象),操作数据库时
直接从连接池中获取Connection对象,用完后又放回数据库连接池中。通过
对连接对象的保存与放回,大大提高了数据库的访问效率。

二:DBCP连接池组件
Properties pro=new Properties(); // 属性资源类
InputStream input=DBCPDemo.class.getClassLoader().getResourceAsStream("dbcpfactory.properties"); // 获取指向配置文件的输入流
pro.load(input); // 从输入流中读取属性列表(键和元素对)
DataSource ds=BasicDataSourceFactory.createDataSource(pro);
Connection conn=ds.getConnection(); // 获取连接对象
注意:属性配置文件中的key不能改变。

三:C3P0连接池组件
配置文件为:c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">org.gjt.mm.mysql.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb2?characterEncoding=utf8</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
</c3p0-config>

ComboPooledDataSource ds=new ComboPooledDataSource(); // 获取连接池对象
Connection conn=ds.getConnection(); // 获取Connection数据库连接对象

四:MySQL中的触发器(trigger)
delimiter //

create trigger 触发器名称 before|after 触发事件(insert|delete|update)
on 触发器关联的表名称 for each row
begin
触发器执行的逻辑代码
end

delimiter ;

触发器案例:
delimiter //

create trigger stu_trigger after insert
on student for each row
begin
insert into log(logname,logtime)values(new.name,now());
end //

delimiter ;

五:MySQL的优化
查询优化的方法:

1.优化查询SQL语句。如果连接查询和子查询都可以查询到结果,则优先选择连接查询。
因为子查询时会创建临时表,临时表的内容是存储子查询结果的,查询完毕后,还要撤销临时表。

2.在频繁使用的列上创建索引(index)。

3.拆表。如果一个表中的字段很多,应该将不经常使用的字段存储于另一张表中,原表
只保留常用查询字段。

4.增加冗余字段。将需要经常使用到的信息以冗余字段的方式添加到表中,省去了连接
查询的耗时。eg:如果经常要查询员工姓名与其对应的部门名称,则
可将部门名称作为员工表emp的一个冗余字段,省去了emp表与dept表
的连接查询。
5.增加中间表。建立一个中间表,将多张表的查询字段存放于此中间表中。

六:使用MySQL Workbench建立ER图,导出成SQL文件,并导入
1.在Data Modeling模式下创建EER模型。
2.导出EER模型为SQL文件。
3.在SQL Development模式下导入SQL文件,并执行。

时间: 2024-10-08 14:54:12

DBCP连接及MySQL优化的相关文章

使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案

本文提供了对c3p0与DBCP连接池连接MySql数据库时, 8小时内无请求自动断开连接的解决方案.首先介绍一下我在项目(c3p0连接池)中遇到的问题,后面还提供了使用DBCP连接池的解决方案. 项目环境: Java Web项目框架为Spring MVC+JPA,使用c3p0连接池,发布环境为Tomcat 7 错误描述: 项目运行一段时间(大概几个小时)之后访问时会出现第一次访问报错,再次访问正常的现象,且多次出现此问题. 报错日志: [plain] view plaincopy org.spr

使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方式

本文提供了对c3p0与DBCP连接池连接MySql数据库时. 8小时内无请求自己主动断开连接的解决方式.首先介绍一下我在项目(c3p0连接池)中遇到的问题,后面还提供了使用DBCP连接池的解决方式. 基本问题解决 项目环境: Java Web项目框架为Spring MVC+JPA,使用c3p0连接池,公布环境为Tomcat 7 错误描写叙述: 项目执行一段时间(大概几个小时)之后訪问时会出现第一次訪问报错,再次訪问正常的现象.且多次出现此问题. 报错日志: org.springframework

使用JDBC连接MySQL数据库--典型案例分析(三)----使用Apach DBCP连接池d

问题: 本案例要求使用Apach DBCP 连接数据池重构类DBUtility 为ConnectionSource类,并重构案例"实现DBUtility",提供连接的获取,关闭功能的"中的EmpDAO类,在该类中使用ConnectionSource来获取连接. 方案: 直接使用JDBC访问数据库时,需要避免一下隐患: 1.每一次数据操作请求都是需要建立数据库连接,打开连接,存取数据和关闭数据等步骤.而建立和打开数据库是一件既耗资源有费时间的过程,如果频繁发生这样的数据库操作,

DBCP连接池的使用

通过连接池(数据源)优化我们的操作. 需求: 使用jdbc的时候,没操作一次都需要获取连接(创建)用完之后把连接释放掉了(销毁),通过连接池来优化curd操作. 技术分析: 连接池 连接池概述: 管理数据库的连接, 作用: 提高项目的性能. 就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可. 所有的连接池必须实现一个接口 javax.sql.DataSource接口 获取连接方法: Connection getConnection() 归还连接的方法就是以

DBCP连接池配置参数说明

<!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property n

Mysql优化(转)

Mysql优化主要通过执行计划,索引,sql语句,调整mysql内部配置 (http://blog.chinaunix.net/uid-11640640-id-3426908.html) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)  

MySQL优化—工欲善其事,必先利其器之EXPLAIN

转自:http://www.cnblogs.com/magialmoon/archive/2013/11/23/3439042.html mysql官方手册关于explain命名的说明文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_select_type 最近慢慢接触MySQL,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器.最近我就打算了解下几个优化MySQL中经常用到的工具.今天就简单介绍下

小菜鸟mysql优化解决方案

根据小菜鸟的个人习惯,自己的编写的一套MYSQL优化方案,感觉还是有点儿菜,望大家谅解,不足之处,请大神们互动! #mysql优化解决方案 #公共参数默认值: max_connections = 151 #同事处理多大连接数,推荐设置最大连接数是上限连接数的80%左右 sort_buffer_size = 2M #查询排序时缓冲区大小,只对order by和group by起作用,可增大此值为16M open_files_limit = 1024 #打开文件数限制,如果show global s

DBCP连接池简介

DBCP连接池简介 1.数据库连接基础 数据库连接池基础主要包括以下三个方面的内容:数据库连接池的基本概念.数据库连接池的工作原理.Java开源的连接池.下面将从这三个方面一一介绍: (1)数据库连接池的基本概念 数据库连接是一种关键的.有限的.昂贵的资源,这一点在多用户的Web应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.因此,数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用