1.一条sql在服务器端执行过程
1.查询缓存。如果缓存是打开的,mysql服务器会先从缓存中查数据,如果有则直接返回结果
2.生成执行计划。包括解析sql、预处理、优化sql
3.执行查询计划。
4.返回结果。
2.索引有哪几种分类
按数据结构分
- B+树索引
- hash索引
从存储角度区分
- 聚簇索引
- 非聚簇索引
逻辑划分
- 普通索引
- 组合索引
- 唯一索引
- 主键索引
- 全文索引
3.InnoDB和MyISAM比较
- 事务。InnoDB支持事务,MyISAM不支持
- 全文索引。InnoDB 5.6之前不支持全文索引,MyISAM支持
- count。InnoDB需要全表扫描。MyISAM存储了count,因此MyISAM可以直接返回
- 外键。InnoDB支持,MyISAM不支持
- 锁。InnoDB可支持行锁,MyISAM只支持表锁
4.水平切割和垂直切割
- 水平切割:指按某个规则切割记录。将符合某个规则的记录存放在指定表,即传统意义上的分表。
- 垂直切割:将表的某些记录拆成新的表。将关系更大的一些列单独组合成一个新的表,或者变化较大或重复较多的列组合成新的表。
5.主从复制中涉及到哪几个线程
- binlog线程:负责将sql语句写到binlog日志中
- I/O线程:负责处理从服务器的请求,将binlog日志响应到从服务器
- SQL线程:从服务器接收到binlog日志后生成sql并重放
6.主从同步缓慢的原因和解决方法
主从同步缓慢的原因
主要是主服务器压力大,来不及将binlog日志发送到从服务器,压力大的原因有:
- 慢sql
- 处理太多的查询操作
- 从服务器解析&回放sql慢
解决方法
减轻住服务器的压力,增加从服务器的处理速度,主要措施有:
- 优化索引,减少慢sql
- 读写分离
- 主服务主要写,从服务器主要度,因此服务器配置可适当调整一下。比如从服务器只能读,写数据都是从主服务器上同步过来的sql,可以适当降低从服务上的数据安全性、数据一致性校验。
7.事务的特性
- A:原子性。事务是最小的执行单位,事务中所有的sql要么都执行,要么都不执行。
- C:一致性。事务执行前后,数据库中的数据从一个一致性状态转移到另外一个一致性状态。
- I:隔离性。并发执行事务的时候,相互不会影响。
- D:持久性。事务执行完成后,对数据的修改写到磁盘上了,修改是永久的。即使数据库挂了也不会有影响。
————-持续更新中—————