目录
一 事务之间相互影响分为几种
二 mysql常见的储存引擎
三 死锁
四 查看使用的储存引擎
五 修改储存引擎
六 总结
脏读:就是读取了没有提交的数据,
不可重复读 :前后多次读取内容不一致
幻读:两次读的结果不一样
丢失更新:后一个会覆盖前一个事务结果
mysql及事务隔离的级别
read uncommitted:读取尚未提交的数据,也就是读取的是脏读数据
read committed:提交读就是读取已经提交的数据,可以解决脏读,
repeatable read:可重复读,无论其他事务是否修改提交了数据,在这个事务中看到的数据始终不受其他事务的影响
serializable:串行化,可以解决脏读 但是每次读都会获得表级共享锁,读写相互受影响
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;
方法二
show create table 表名;
alter table 表名 engine=MyISAM;
方法二 改配置文件
vim /etc/my.cnf
systemctl restart mysqld.service
三 创建表时可以指定引擎
create table 表名(字段1 数据类型,...) engine=MyISAM;
MyISAM 和 INNODB区别(差异)
-InnoDB支持事物,而MylSAM不支持事物。
- lnnoDB支持行级锁,而MylSAM支持表级锁.
- InnoDB支持MVCC,而MlSAM不支持。
- lnnoDB支持外键。而MyISAM不支持。
- lnnoDB全文索引,而MylSAM支持。