MySQL 归纳总结
2024-09-07 09:35:01
1.MySQL存储引擎
主要使用的就是两个存储引擎,分别是InnoDB和MyISAM。
InnoDB
InnoDB是MySQL的默认存储引擎。
InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。默认的隔离级别是可重复读。通过间隙锁策略防止幻读的出现。
InnoDB表是基于聚簇索引建立的。聚簇索引对主键查询有很高的性能。
InnoDB内部做了很多优化。包括从磁盘读取数据时采用可预测性预读,能够自动在内存中创建Hash索引以加速读操作的自适应哈希索引,以及能够加速插入操作的插入缓冲区等。
MyISAM
MyISAM提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁。
在MyISAM表,可以基于其前500个字符创建索引。MyISAM也支持全文索引,这是一种基于分词创建但索引,支持复杂但查询。
MyISAM引擎设计简单,数据以紧密格式存储,在某些场景下,性能很好。
InnoDB和MyISAM区别
- 是否支持事务
- InnoDB支持事务
对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin transaction和commit之间,组成一个事务; - MyISAM不支持,
- 支持锁的级别不同
- InnoDB支持行锁
注意:数据库的主键和索引对锁是有影响的。
在使用for update的时候,在明确使用主键或者索引的时候才会是行锁,否则就是表锁。 - MyISAM只支持表锁
- 是否支持外键
- InnoDB支持外键
- MyISAM不支持。
4. 存放索引的方式
- InnoDB是聚集索引,
数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。
因此,主键不应该过大,因为主键太大,其他索引也都会很大。 - MyISAM是非聚集索引,数据文件是分离的,
索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
- 查询具体行数的差异
- InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。
- MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
- 是否支持全文索引
- Innodb不支持全文索引(innodb引擎在5.6.4版本提供了对全文索引的支持)
- MyISAM支持全文索引,查询效率上MyISAM要高于Innodb;
- InnoDB是聚集索引,
最新文章
- RMAN还原32位数据库到64位实例的错误处理
- 冒泡排序 &; 选择排序 &; 插入排序 &; 希尔排序 JavaScript 实现
- JVM &; Server &; Connector &; Context Relationship
- 7.6--找过点最多的直线(CC150)
- VC++ 判断当前系统为32位还是64位
- Excel 代码
- 使用RedisTemplate的操作类访问Redis(转)
- Entity Framework 安装出现问题
- pom.xml第一行报错
- Android 之Activity切换动画效果
- sublime 3 增加php开发插件
- ios的虚拟键盘与fixed移动端的bug
- 『素数 Prime判定和线性欧拉筛法 The sieve of Euler』
- Leetcode 1-10
- 关于IWMS中遇到的问题及解决方法
- 【DWM1000】 code 解密1一 去掉Main 函数多余内容
- 拒绝服务(DoS)理解、防御与实现
- ELK 的插件安装(head)
- 【洛谷】P1357 花园(状压+矩阵快速幂)
- VMware Workstation unrecoverable error: (vmx)虚拟机挂起后无法启动问题
热门文章
- 解决WSL在执行32位程序时报错“Exec format error”的问题
- 201771010111-李瑞红 实验一 软件工程准备-<;构建之法-现代软件工程-基础认识和理解>;
- NBL小可爱纪念赛「 第一弹 」 游记(部分题解)
- 什么是DevOps ?
- 李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent
- thinkphp 路径 (纯转)
- Pandas和Numpy的一些金融相关的操作(一)
- “GANs”与“ODEs”:数学建模的终结?
- 《Flutter 动画系列一》25种动画组件超全总结
- POJ - 3468 线段树单点查询,单点修改区间查询,区间修改模板(求和)