MySql中事务、事务的隔离级别、数据库锁、索引、视图

MySql中事务、事务的隔离级别、数据库锁、索引、视图

事务:事务是一个逻辑工作单元,这个逻辑工作单元包含所有的操作。

一、事务的特征:

1.原子性:事务中的所有操作不可再分,所有操作要么全部成功,要么全部失败。

2.一致性:事务操作之前是一种状态,操作之后是一种状态,但是数据库系统的一致性保持不变。

3.隔离性:多个事务共同进行操作时,他们的操作过程是隔离的。即任何一个事务在操作过程中,其它事务操作不能看到其操作过程。

4.持久性:事务一旦提交,则对数据库的影响是持久性的,不能撤销(回滚)。

二、事务的隔离级别

隔离的前提概念:

1.脏读:一个事务读取到了其它事务操作过程中的数据,这种现象叫做“脏读”,读取到的数据叫做“脏数据”。

2.不可重读(现象):在一个事务中两次读取到的数据不一致的现象,叫做不可重读。

3.幻读:两次读取到的记录数量不一致的现象。

隔离级别:

1.读未提交隔离级别(read uncommitted):可以读取到其它事务未提交的数据,可能发生脏读、不可重读、幻读。

2.读提交级别(read committed):只能读取到其它事务已经提交的数据,可能发生不可重读、幻读。

3.可重读级别(repeatable read):--------------->mysql默认的隔离级别

在一个事务中多次读取到的数据值是相同的。

注:在mysql的InnoDB存储引擎已经解决了幻读现象。

4.序列化(串行化)隔离级别(Serializable)

事务在序列化隔离级别下,普通的执行select查询操作语句也会加“读锁”。

三、数据库锁

1.数据库锁分为“读锁”(共享锁)和“写锁”(排它锁)。

“读锁”与“读锁”可以兼容共享,但是与“写锁”排斥。“写锁”与“读锁”和其它“写锁”都排斥。

2.手工加锁方式:

手工添加“读锁”方式:select 字段名... from 表名称 【where 条件】 lock in share mode;

手工添加“写锁”方式:select 字段名... from 表名称 【where 条件】 for update;

四、索引(index)

------->索引可以分为普通索引(index),唯一索引(unique index),主键索引(primary index),全文索引(fulltext index)

索引中存储的索引字段值与其对应的逻辑指针(记录具体所在位置)。

索引可以显著地提高查询效率,但是应该在数据量较多地表中使用,因为索引本身也要占据空间,尽管它能提高查询效率,但是相应因为占用内存,会降低数据地加载效率,所以说索引并不是越多越好。

创建索引语法:

普通索引:create index 索引名 on 表名称(字段名);

创建唯一索引:create unique index 索引名称 on 表名称(字段名);

查看索引:show index from 表名称;

删除索引:delete index 索引名 from 表名称;

五、视图

可以将视图看作一张虚拟表,用来封装查询语句。

create 【or replace】 view 视图名称 as select 语句;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值