数据库中事务是用户一系列的数据库操作序列(insert,delete,update等),这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务的ACID特性
这个知识可以说是必须掌握的。事务只有具备这四种特性,才能确保数据库的可靠性。
A:原子性。即事务中的操作要么全做,要么全不做。比如在某个插入失败时,需要回退到事务开始前的状态。
C:一致性。事务不破坏数据库的完整性约束。比如,如果插入了一个元素使主键列不唯一,那么破坏了一致性,就会撤销事务。
I:隔离性。每个事务的对象是独立的,一个事务的操作对其他事务不可见。S数据库系统提供了一种粒度锁策略,允许事务锁住自己的对象,提高事务间的并发度。
D:持久性。事务一旦提交,结果是永久的,即使死机故障恢复后也能恢复数据。
基本语句commit,rollback
我们要知道,事务操作只能在InnoDB引擎表中进行,MyISA表不行,因为不支持事务和行级锁。
SQL语句分类
DDL:数据定义语言,如CREATE,ALTER,DROP
DML:数据操纵语言,处理数据的操作。INSERT,DELETE,UPDATE,SELECT
DCL:数据控制语言。用于授予回收某种特权,事务发生。GRANT,ROLLBACK,COMMIT
commit,rollback通常放在DML语句后面,用来提交事务或者回滚事务,
SAVEPOINT,回滚时不会撤销所有操作。
MyISAM和InnoDB
这两个可以说是最常见的数据库引擎了,我们需要有一个简单地理解。
MyISAM强调快速读取操作,所以他在WEB开发中很受欢迎。当我们在筛选大量数据时非常迅速。比如:
select count(*) from table;MyISAM表中存储了行数,只要读取这个数字即可,不用一行行扫描。
法。
但是,缺点是,不支持事务,行级锁以及外键约束等。这就导致了对于事务类型的操作无法进行,对于高并发处理不好,崩溃后无法安全恢复。
InnoDB被设计用来处理大量短期事务,适用于更新频繁的高并发,自动恢复,支持外键,自增属性。
所以,如果需要事务支持和高并发,InnoDB是不错的选择。
Heap是一个存储临时数据的引擎,关机后数据就丢失了。
数据文件存放
MyISAM数据库文件包括:
.frm文件:保存数据库的表结构
.MYD: 保存数据
.MYI:保存索引文件
.LOG保存日志文件
MyISAM数据库文件包括:
数据文件,保存数据,如:ibdata1,idbata2
系统表空间文件,保存系统数据,所有表公用
.ibd文件,单表空间文件,存放表数据和索引
日志文件。
我们可以在SQL语句后面加TYPE=MyISAM或ENGINE=InnoDB来灵活改变数据库引擎。