mysql-事务与存储引擎

事务

事务是恢复和并发控制的基本单位,指一件事从开始发生到结束的整个过程。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

  • 原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
  • 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

事务应用:

    开启事务:start transaction;  
    执行sql命令;  
    中止事务:commit; rollback;  
    rollback只针对于对表记录的增删改,对创建库、创建表的操作无效

存储引擎

存储引擎是用来处理表的处理器。
基本操作:

查看表的引擎:show create table 表名;  
创建表时指定存储引擎:create table 表名 () engine=myisam;  
查看所有的数据引擎:show engines;  

常用存储引擎特点:
innodb:

  • 共享表空间:表名.frm (表结构) 表名.ibd(表结构&索引信息)
  • 支持行级锁

myisam:

  • 独享表空间:表名.frm(表结构) 表名.myd(表记录) 表名.myi(索引信息)
  • 支持表级锁

memory:

  • 表名.frm(表结构)
  • 存储于内存当中,服务重启之后表结构在,表记录都消失

锁:为了解决客户端并发访问的冲突问题
锁类型:读锁(可以进行查询,但不能改变表中内容),写锁(insert、update、delete,互斥锁,排他锁)
锁粒度:表级锁、行级锁
执行查询比较多的表使用myism引擎(使用innodb比较浪费资源);执行写操作比较多的表使用innodb引擎

原文地址:https://www.cnblogs.com/miloli/p/12454098.html