MYSQL数据库的引擎

MYSQL中有许多引擎,其中最重要的就是INNODB引擎和MYISAM引擎,这两种引擎有什么区别,接下来一一讲解

MYISAM引擎:

  MYISAM引擎不支持事务,不支持外键,支持全文索引,支持表级锁

  优点:执行SELECT语句的时候,MYISAM是不错的选择,支持表级锁(所以MYISAM不会存在死锁的情况)

    语法为:lock tables orders read local,order_detail read local;
          select sum(total) from orders;

          select sum(subtotal) from order_detail;

        unlock tables;

   加入Local选项,其作用就是在满足MYISAM表并发插入条件下,允许其他用户在表尾并发插入记录。

   以下三点防止了MYISAM死锁

    1.在用lock tables 给表显示加表锁时,必须同时取得所有涉及表的锁,

    2.MYSQL不支持锁升级,这一点反映到实际过程中就是,只能访问显示加锁的表,不能访问未显示加锁的表

    3.MYSQL不支持锁升级,如果加的是读锁,那么只能执行查询操作,不能执行更新操作(不支持升级)

  缺点:不支持事务,在进行现金转账之类的对数据敏感的操作时,万一因为某些情况失败,需要回滚,而MYISAM不支持事务,不能回滚。这样就导致了数据不一致的问题。这也是我们为什么大多数选择INNODB引擎而不选择MYISAM引擎的原因。

INNODB引擎:

  INNODB支持引擎,支持外键,支持事务,支持行级锁

  优点:与MYISAM的缺点相反,如果对数据敏感的操作因为某些情况失败,要进行回滚时,可以进行回滚,这样就回到原始数据的状态,数据还是一致的。

  缺点:INNODB引擎好像除了会出现死锁外,我还不知道有哪些缺点

posted @ 2020-07-21 18:05  嗯哼哈哈哈哈哈  阅读(13)  评论(0)    收藏  举报