一.MySql运行机制
命令行要使用mysql一般首先都是先进行认证。输入正确的密码后连接到数据库,接着就可以执行sql命令。
mysql服务器拿到命令后,首先会使用解析器分析是否满足语法规则,如果不满足则会返回错误提示。如果语法正确,会进入优化器阶段,执行生成计划,设置索引,在执行之前,执行器会进行权限判断,你是否对拥有对应表的相关权限。最后就是执行器阶段,开始执行sql命令。
在mysql8.0之前的版本是支持缓存的,如果是查询语句,会先去查询缓存中查看之前是否执行过这条SQL命令,如果存在就直接返回查询结果。
但是查询缓存存在较大的弊端,当存好某个表的缓存后,任何一条增删改这个表的操作,都会清空该表的查询缓存,如果是更新频率较高的业务,查询缓存就显得比较鸡肋,在8.0后的版本业界删除了
二.数据库引擎
在MySql5.5.5之后,默认,也是现在最常用的数据库引擎是InnoDB,优点是支持事务,除此之外还支持外键,快速恢复等功能。在之前版本中的默认引擎是mysql的原生引擎mylsam,不过它不支持事务,所以被InnoDB替代了。
如要设置指定引擎,只需要在建表语句的最后加上engine=引擎 就可以了。
三.MySql的优化
数据库的优化手段主要有三个:sql和索引优化,数据库结构优化,系统硬件优化。
1.sql和索引优化主要是指同优化sql语句和索引来提高效率。比如使用where的时候要避免使用!=和<>,这些会使得引擎放弃索引进行全表扫描。
适当使用前缀索引。
尽量避免使用select *,而是查询需要的字段。
尽量使用join来替代子查询,因为子查询会创建一张新的临时表,join不会。
2.数据库结构优化
通常来说,数据库越小查询的越快,所以表的字段长度不要过大(在平常学习的时候习惯设置为255 ORZ)。
使用简单的数据类型,能用int就不要用varchar。
少用text类型
3.硬件优化
硬件无非硬盘网络内存等,这部分就要看情况了。