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引擎好像除了会出现死锁外,我还不知道有哪些缺点

浙公网安备 33010602011771号