一、常说的事务ACID是什么?
事务的四⼤特性
ACID
原⼦性Atomicity:
⼀个事务必须被事务不可分割的最⼩⼯作单元,整个操作要么全部成功,要么全部失败,⼀般就是通过
commit
和
rollback
来控制
⼀致性Consistency:
数据库总能从⼀个⼀致性的状态转换到另⼀个⼀致性的状态,⽐如下单⽀付成功后,开通视频
播放权限,只要有任何⼀⽅发⽣异常就不会成功提交事务
隔离性Isolation:
⼀个事务相对于另⼀个事务是隔离的,⼀个事务所做的修改是在最终提交以前,对其他事务是不可⻅的
持久性Durability:
⼀旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失
二、查Mysql的存储引擎
说下你知道Mysql常⻅的存储引擎,新版Mysql默认是哪个?
常⻅的有多类,
InnoDB
、
MyISAM
、
MEMORY
、
MERGE
、
ARCHIVE
、
CSV
等。
⼀般⽐较常⽤的有
InnoDB
、
MyISAM。
MySQL 5.5
以上的版本默认是
InnoDB
,
5.5
之前默认存储引擎是
MyISAM。
mysql的存储引擎InnoDB&MyISAM的异同和选择
一般来讲,选择Innodb就可以了
![](https://img-blog.csdnimg.cn/20210731214539988.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM4MDQxNjk3,size_16,color_FFFFFF,t_70)
三、mysql索引
索引类型
数据库索引的好处和坏处,你常⽤的最佳实践
创建索引的时候主要考虑什么?使⽤索引的优缺点有哪些?使⽤应该注意些什么?
考虑点:结合实际的业务场景,在哪些字段上创建索引,创建什么类型的索引
索引好处:
快速定位到表的位置,减少服务器扫描的数据
有些索引存储了实际的值,特定情况下只要使⽤索引就能完成查询
索引缺点:
索引会浪费磁盘空间,不要创建⾮必要的索引
插⼊、更新、删除需要维护索引,带来额外的开销
索引过多,修改表的时候重构索引性能差
索引优化实践
前缀索引,特别是
TEXT
和
BLOG
类型的字段,只检索前⾯⼏个字符,提⾼检索速度
尽量使⽤数据量少的索引,索引值过⻓查询速度会受到影响
选择合适的索引列顺序
内容变动少,且查询频繁,可以建⽴多⼏个索引
内容变动频繁,谨慎创建索引
根据业务创建适合的索引类型,⽐如某个字段常⽤来做查询条件,则为这个字段建⽴索引提⾼查询速度
组合索引选择业务查询最相关的字段
四、数据库查询指令的执行顺序
数据库查询的指令执⾏顺序
select
、
where
、
from
、
group by
、
having
、
order by。
where
初步过滤条件
group by
过滤后进⾏分组
[
重点
]
having
对分组后的数据进⾏⼆次过滤
[
重点
]
order by
按照怎样的顺序进⾏排序返回
[
重点
]