- 事务四大特性
- 数据库的三大范式以及五大约束
- 数据库隔离级别及每个级别会引发什么问题
- MySQL存储引擎区别以及各自的使用场景
- 数据库的优化-sql语句优化和索引
- 两种索引的区别
- 最左前缀原则-哪些情况索引会失效
- 乐观锁悲观锁及select加排他锁
- 数据库三范式
- 数据库的主从复制
- 使用explain优化sql和索引
- long_query
- MVCC机制
MySQL 实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE READ)。在可重复读隔离级别下,通过多版本并发控制(MVCC)+ 间隙锁(Next-Key Locking)防止幻影读。
- EXPLAIN 分析 SELECT 查询。
- 当只要一行数据时使用 LIMIT 1。
- 减少查询字段,避免 SELECT * 语句。
- 在Join表的时候使用相当类型的例,并将其索引。
- 为经常搜索的字段建立索引,模糊查询可能另索引失效。
- 避免使用排序字段,排序字段尽量使用主键。
select 加共享锁:
SELECT ... LOCK IN SHARE MODE;
select 加排他锁:
SELECT ... FOR UPDATE;
explain select * from user_info where id = 2\G
\G 的作用是将结果纵向显示。
查看是否开启慢查询日志功能:
show variables like 'slow_query%';
开启慢查询日志功能:
set global slow_query_log=1;
设置慢查询时间阈值:
set global long_query_time=0.1;