美文网首页
MySQL-存储引擎、锁以及事务

MySQL-存储引擎、锁以及事务

作者: 遇明不散 | 来源:发表于2019-06-04 16:36 被阅读0次

    MySQL存储引擎(处理表的处理器)

    # 查看所有存储引擎
    show engines;
    # 查看已有表的存储引擎
    show create table 表名;
    # 创建表指定的存储引擎
    create table 表名(...)engine=myisam;
    # 已有表
    lter table 表名 engine=innodb;
    

    解决客户端并发访问的冲突问题

    锁分类
    锁类型
    • 读锁(共享锁)
      加读锁之后别人不能更改表记录,但可以进行查询
    • 写锁(互斥锁、排他锁)
      可以进行insert、delete、update等操作,加写锁之后别人不能查、不能改
    锁粒度
    • 表级锁(myisam)
    • 行级锁(innodb)
    常用存储引擎特点
    InnoDB特点
    • 共享表空间
    # 表名.frm :表结构和索引文件
    # 表名.ibd :表记录
    
    • 支持行级锁
    • 支持外键、事务操作
    MyISAM特点
    • 独享表空间
    # 表名.frm :表结构
    # 表名.myd :表记录
    # 表名.myi :索引文件
    
    • 支持表级锁
    如何决定使用哪个存储引擎
    • 执行查操作多的表用MyISAM(使用InnoDB浪费资源)
    • 执行写操作多的表用InnoDB

    事务

    • 一件事从开始发生到结束的整个过程
    • 确保数据一致性
    • 事务与事务回滚只针对对记录的操作:增加、删除、修改,对创建库、创建表是无效的
    属性
    • 原子性:一个事务是不可分割的工作单位,事务中的各个操作要么都做,要么都不做。
    • 一致性:事务必须从一个一致性状态到另一个一致性状态。
    • 隔离性:一个事务的执行的不能被其他并发事务干扰。
    • 持久性:一个事务一旦提交,它对数据库的改变是永久性的。
    事务和事务回滚应用
    • MySQL中sql命令会自动commit到数据库
    show variables like "autocommit";
    
    事务应用
    # 开启事务
    # 开始事务后,自动提交被禁用
    begin;
    # 终止事务(回滚事务)
    commit; | rollback;
    

    相关文章

      网友评论

          本文标题:MySQL-存储引擎、锁以及事务

          本文链接:https://www.haomeiwen.com/subject/bwcrxctx.html