事务
事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这个系列要么全部执行,要么全部放弃执行。一般而言,程序中可以包含多个事务。
事务是保证底层数据完整的重要手段。
事务的特点:
1、原子性:事务是应用中不可再分的最小的逻辑执行单体。
2、一致性:事务的执行结果必须让数据库从一个一致性状态到另一个一致性状态。
3、隔离性:事务之间互不干扰。
4、持久性:事务一旦提交,对数据的任何改变都要记录到永久存储器。
数据库的事务由下列语句组成:
※一组DML语句,经过这组DML语句修改的数据将保持较好的一致性
※一条DDL语句
※一条DCL语句
DDL和DCL语句最多一条,因为DDL和DCL都会导致事务立即提交
当事务的所有包含的全部数据操作都成功执行后,应该提交(commit)事务,使这些修改永久生效。
事务提交的两种方式:
1、显示提交:使用commit
2、自动提交:执行DDL或DCL语句,或者程序正常退出。
当事物中的任意一个数据库操作失败之后应该回滚(rollback)事物,使事物中的全部修改都失效。
事物回滚的两种方式:
1、显示回滚:rollback
2、自动回滚:系统错误或强行退出。
MySQL默认关闭事物(即打开自动提交),开启事物输入:set AUTOCOMMIT = 0/1——自动提交和开启事物是相反的
如果不想关闭整个窗口的自动提交,只想临时性的开始事物,则可以使用MySQL提供的start transaction或begin两个命令,都是表示临时性的开始一次事物。处于start transaction或begin之后的DML语句不会立即生效,除非显示的提交事物,或者执行DDL、DCL语言来隐式的提交事物。
#临时开启事务
BEGIN
INSERT INTO t_user VALUES(null,'咕呱刮', 23),(null,'嘻嘻哈', 24),(null,'么么叽', 25);
#查询
SELECT * FROM t_user
#回滚事务
ROLLBACK
#再次查询
SELECT * FROM t_user
另外还可以用savepoint设置事物的中间点,让事物滚回到指定的中间点,而不是全部回滚
SAVEPOINT a
ROLLBACK TO a
数据库连接池
数据库连接的建立及关闭是极其耗费系统资源的操作。
因此使用数据库连接池的解决方案:当系统启动的时候,系统主动建立足够的数据库连接,并将这些连接组成一个连接池。每次程序请求数据库连接的时候,无需从新打开连接,而是直接从连接池中取出已有的连接使用,使用完后不再关闭数据库连接,而是直接将连接还给连接池。
数据库连接池常用的参数如下:
1、数据库的初始连接数
2、连接池的最大连接数
3、连接池的最小连接数
4、连接池每次增加的容量
Database通常被称为数据源,包含连接池和连接池管理两个部分,但习惯也把Database称为连接池
一、DPCP数据源
二、C3P0数据源