mysql及事务隔离级别

目录

一 事务之间相互影响分为几种

二 mysql常见的储存引擎

三 死锁

四 查看使用的储存引擎

五 修改储存引擎

六 总结


一 事务之间相互影响分为几种

脏读:就是读取了没有提交的数据,

不可重复读 :前后多次读取内容不一致

幻读:两次读的结果不一样

丢失更新:后一个会覆盖前一个事务结果

mysql及事务隔离的级别

read uncommitted:读取尚未提交的数据,也就是读取的是脏读数据

read committed:提交读就是读取已经提交的数据,可以解决脏读,

repeatable read:可重复读,无论其他事务是否修改提交了数据,在这个事务中看到的数据始终不受其他事务的影响

serializable:串行化,可以解决脏读 但是每次读都会获得表级共享锁,读写相互受影响

二 mysql常见的储存引擎

mysql及事务隔离级别_第1张图片

1. mylsam 是表级锁定,读或者写无法同时进行

好处是:分开执行时,速度快,资源占用少

2.mylsam表支持三种不同的储存格式

静态固定表 char(10)  有固定的10个字节,优点储存非常迅速,容器缓存,故障之后容易恢复

动态表

varchar 记录不是固定长度的优点是占用空间少但是频繁的更新、删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能,并且出现故障的时候恢复相对比较困难。

压缩表

压缩表由 myisamchk 工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支

innodb特点

支持事务

默认的引擎级别是innodb 清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表(truncate)

三 死锁

MyISAM :表级锁定 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
innodb :行级锁定 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高

怎么解决死锁

show

怎么选择储存的类型的

如果并发量大,什么并发量大,读写的并发量大,那我们建议使用innoDB 如果单独的写入或是插入单独的查询,那我们建议使用没有INNODB

四 查看使用的储存引擎

show table status from 库名 where name='表名'\G;

mysql及事务隔离级别_第2张图片

 方法二

show create table 表名;

mysql及事务隔离级别_第3张图片

五 修改储存引擎

alter table 表名 engine=MyISAM;

mysql及事务隔离级别_第4张图片

 方法二 改配置文件

vim /etc/my.cnf

mysql及事务隔离级别_第5张图片

 systemctl restart mysqld.service

三 创建表时可以指定引擎

create table 表名(字段1 数据类型,...) engine=MyISAM;

 mysql及事务隔离级别_第6张图片

六 总结

MyISAM 和 INNODB区别(差异)

-InnoDB支持事物,而MylSAM不支持事物。
- lnnoDB支持行级锁,而MylSAM支持表级锁.
- InnoDB支持MVCC,而MlSAM不支持。
- lnnoDB支持外键。而MyISAM不支持。
- lnnoDB全文索引,而MylSAM支持。

你可能感兴趣的:(mysql,数据库)