MySQL简单介绍——换个角度认识MySQL1、InnoDB存储引擎
Mysql版本=5.5 默认的存储引擎,MySQL推荐使用的存储引擎 。支持事务,行级锁定,外键约束 。事务安全型存储引擎 。更加注重数据的完整性和安全性 。
存储格式 : 数据,索引集中存储,存储于同一个表空间文件中 。
InnoDB的行锁模式及其加锁方法: InnoDB中有以下两种类型的行锁:共享锁(读锁: 允许事务对一条行数据进行读?。┖?互斥锁(写锁: 允许事务对一条行数据进行删除或更新),对于update,insert,delete语句,InnoDB会自动给设计的数据集加互斥锁,对于普通的select语句,InnoDB不会加任何锁 。
InnoDB行锁的实现方式: InnoDB行锁是通过给索引上的索引项加锁来实现的,如果没有索引,InnoDB将通过隐藏的聚簇索引来对记录加锁 。InnoDB这种行锁实现特点意味着:如果不通过索引条件检索数据 , 那么InnoDB将对表中的所有记录加锁,实际效果跟表锁一样 。
(1)在不通过索引条件查询时,InnoDB会锁定表中的所有记录 。
(2)Mysql的行锁是针对索引加的锁 , 不是针对记录加的锁,所以虽然是访问不同行的记录 , 但是如果使用相同的索引键,是会出现冲突的 。
(3)当表有多个索引的时候,不同的事务可以使用不同的索引锁定不同的行 , 但都是通过行锁来对数据加锁 。
优点:
1、支持事务处理、ACID事务特性;
2、实现了SQL标准的四种隔离级别( 原子性( Atomicity )、一致性( Consistency )、隔离性(Isolation )和持续性(Durability ));
3、支持行级锁和外键约束;
4、可以利用事务日志进行数据恢复 。
5、锁级别为行锁,行锁优点是适用于高并发的频繁表修改,高并发是性能优于 MyISAM 。缺点是系统消耗较大 。
6、索引不仅缓存自身,也缓存数据,相比 MyISAM 需要更大的内存 。
缺点:
因为它没有保存表的行数,当使用COUNT统计时会扫描全表 。
使用场景:
(1)可靠性要求比较高 , 或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况 。
2、 MyISAM存储引擎
MySQL= 5.5 MySQL默认的存储引擎 。ISAM:Indexed Sequential Access Method(索引顺序存取方法)的缩写,是一种文件系统 。擅长与处理,高速读与写 。
功能:
(1)支持数据压缩存储,但压缩后的表变成了只读表,不可写;如果需要更新数据 , 则需要先解压后更新 。
(2)支持表级锁定,不支持高并发;
(3)支持并发插入 。写操作中的插入操作,不会阻塞读操作(其他操作);
优点:
1.高性能读?。?
2.因为它保存了表的行数,当使用COUNT统计时不会扫描全表;
缺点:
1、锁级别为表锁,表锁优点是开销小,加锁快;缺点是锁粒度大,发生锁冲动概率较高,容纳并发能力低,这个引擎适合查询为主的业务 。
2、此引擎不支持事务,也不支持外键 。
3、INSERT和UPDATE操作需要锁定整个表;
使用场景:
(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务 。
InnoDB和MyISAM一些细节上的差别:
1、InnoDB不支持FULLTEXT类型的索引,MySQL5.6之后已经支持(实验性) 。
2、InnoDB中不保存表的 具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可 。注意的是,当count()语句包含 where条件时 , 两种表的操作是一样的 。
3、对于AUTO_INCREMENT类型的字段 , InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引 。
推荐阅读
- 谢老板的无人直播,谢老板的无人直播是真的吗
- 小程序js引入template,小程序引入js文件
- 鸿蒙系统怎么设置锁屏拍照,鸿蒙 设置锁屏
- 哪个直播平台城堡便宜,直播平台一个城堡多少人民币
- go语言1.12什么时候 go语言nil
- 新媒体主播现状如何写简介,新媒体环境下播音主持人的发展困境与出路
- 贝亲公众号怎么关注,贝亲查
- qq闪头像制作网站,头像闪字
- go是不是解释型语言 哪些是解释型语言