java面试-Mysql

  • 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日志,写入中继日志中。从库再读取中继日志的变化
    • 分库分表
      • 垂直分库,根据服务分库
      • 水平分库,将一个库的数据分到多个库中
      • mycat分库分表中间间
      • 垂直分表,将不常用,大字段单独拆分成一个表
      • 水平分表,将一个表拆分到多个表中
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值