学完redis再来复习mysql,温故知新:)
查看mysql支持的存储引擎
show engines
现在默认都是innodb了,支持事务;其他的像myisam和memory都不支持事务
事务的acid特性
- 原子性atomicity
一起生,一起死 - 一致性consistency
状态切换完整 - 隔离性isolation
- 持久性durability
事务提交后不能撤销
事务使用
#开启事务
set autocommit=0;
[start transaction;]
my sql command1...
#savepoint a;#设置保存点
my sql command2...
#rollback to a;#回滚到a,即a下面的没有执行
#结束事务
commit;
事务隔离级别
设置为serializable串行化,可以解决并发问题:脏读update,幻读insert,不可重复读repeat select,但是效率低。
mysql默认隔离级别为REPEATABLE-READ,不能解决幻读,其他两个ok。
oracle默认read committed
查看当前隔离级别
select @@tx_isolation
设置当前连接的隔离级别:
set session transaction isolation level serializable;
设置数据库系统的全局隔离级别:
set global transaction isolation level read committed;
以下四种隔离级别,x代表不能解决的并发问题:
read uncommitted 脏读x,幻读x,不可重复读x
read committed 脏读,幻读x,不可重复读x
REPEATABLE-READ 脏读,幻读X,不可重复读
serializable 脏读,幻读,不可重复读
视图语法
create view myv1 #视图名
as
#查询语句
select id from user where score>90;
使用视图
select * from myv1 where id>2;
删除视图
drop view 视图名1,视图名2,....