锁模块
MyISAM 与 Inno DB 关于锁方面的区别是什么?
一、MyISAM 默认用的是表级锁,不支持行级锁。
lock tables 表名 read | write;表上读锁
unlock tables;表解锁
读锁也叫做共享锁
写锁也叫做排他锁
select 语句后面加上 for update 就可以是 排他锁了。
二、Inno DB 默认用的是行级锁,也支持表级锁。
show variables like 'autocommit';
set autocommit = 0;关闭自动提交,但是仅支持当前session 就是当前窗口的意思。
begin transaction sql 也可以关闭提交。
select sql 后面加上 lock in share mode ;就可以上读锁了
不走索引的时候 整张表都会被锁住
MyISAM 的使用场景
频繁执行全表 count 语句
对数据进行增删改的频率不高,但是对查询非常频繁
没有事务
Inno DB 的使用场景
数据增删改查都相当频繁的场景
可靠性要求比较高,支持事务
数据库锁的分类
一、按锁的粒度划分,可分为表级锁,行级锁,页级锁
二、按锁的级别划分,可分为,共享锁,排它锁
三、按加锁方式划分 ,可分为,显示锁,自动锁
四、按操作划分,可分为,DML锁,DDL锁
五、使用方式来划分,可分为,乐观锁,和悲观锁
锁模块之数据库事务的四大特