- Mysql
- 优化
- 如何定位慢查询
- 阿尔萨斯运维工具,慢查询日志
- 执行计划,有没有使用到索引,以及有没有产生回表查询
- 索引
- 像书的目录,目的是提高查询效率,底层数据结构是b+树,建立索引后可以对数据进行排序
- 覆盖索引
- 查询的值在索引中都可以找到
- 深度分页的通过子查询覆盖索引获取
- 查询的值在索引中都可以找到
- 创建索引原则
- 1数据量大,2常用排序,条件,分组的字段,3使用覆盖索引减少回表。4使用区分度高的
- 索引失效
- 可以通过执行计划,1最左前缀匹配,2索引发生类型转换,字符串不加单引号,3数据区分度不高,mysql的优化
- 表的设计
- 参考阿里开发手册
- sql语句优化
- 尽量不使用*效率比较低,尽量使用索引提高查询效率,表连接的时候小表放左边
- 主从复制,读写分离,使用缓存
- 如何定位慢查询
- 事务
- 并发事务的问题
- 脏读,读到未提交的数据
- 不可重复读,一个事务两次读取同一个数据结果不一样
- 幻读,在查询时数据不存在,但是在插入时,数据已经存在
- redo log(实现事务的持久性)
- undo log(回滚与MVCC,原子性和一致性)
- MVCC
- undo log版本链
- readview
- 当前读
- 加行间锁,间隙锁
- 快照度
- rc和rr
- rc每次事务执行快照读生成readview
- rr第一次快照读生成readview,后续复用readview
- 当前读
- 隐藏字段
- 事务id,记录每一次操作的事务id
- 回滚指针,指向上一个版本的事务地址
- 并发事务的问题
- 主从同步
- binlog日志,包括ddl,dml
- 主库添加事务,将数据改变写入binlog日志中,从库读取主库binlog日志,写入中继日志中。从库再读取中继日志的变化
- binlog日志,包括ddl,dml
- 分库分表
- 垂直分库,根据服务分库
- 水平分库,将一个库的数据分到多个库中
- mycat分库分表中间间
- 垂直分表,将不常用,大字段单独拆分成一个表
- 水平分表,将一个表拆分到多个表中
- 优化
java面试-Mysql
最新推荐文章于 2024-07-09 16:46:46 发布