1、什么是主从复制

  • master将改变记录到二进制日志(binary log),这些记录过程叫二进制日志事件,binary log events.
  • slave将master的二进制日志事件拷贝到它的中继日志(relay log)
  • slave重做中继日志的事件,将改变应用到自己的数据库,mysql复制是异步的且串行化的

    2、数据库优化

  • 数据库性能下降的原因

    • 查询数据过多
    • 关联了太多表,join
    • 没有用到索引或索引失效
    • 服务器调优及各个参数设置(线程数,缓冲等)
  • 表的设计
    • 字段宽度尽可能小
    • 尽量把字段设置为NOTNULL
    • 用join代替子查询,避免创建临时表完成多余的操作
    • 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销
    • 用具体的字段列表代替“*”,不要返回用不到的任何字段
  • 事物
    • 尽量避免大事务操作,提高系统并发能力
  • 外键,维护数据的完整性
  • 索引
    • 优势
      • 类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本
      • 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗
    • 劣势
      • 实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间
      • 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息
  • 优化查询语句
  • 主从复制
  • 分库分表

    3、索引失效的场景

  • where 子句中对字段进行 null 值判断,尽可能的使用 NOT NULL填充数据库.

  • 在 where 子句中使用 != 或 <> 操作符
  • 使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,
  • in 和 not in 也要慎用,用 exists 代替 in 是一个好的选择
  • where子句中对字段进行函数操作
  • 一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。

    4、索引的数据结构

    5、MySQL的存储引擎

  • InnoDB

    • 优点
      • 它遵循ACID模式设计,具有与事务(Transactions)、回滚和保护用户数据的崩溃恢复
      • InnoDB引擎在主内存中维护了一个buffer pool,用来缓存表和索引,频繁访问的数据会直接在内存中操作。
      • 设计表时为每个表添加了主键,会自动优化涉及列的操作。也就是说基于主键的查询、排序、聚合性能会很高。
    • 缺点
      • 空间使用高,内存使用高,批量插入速度慢;
  • myisam
    • 优点:访问速度快,支持全文索引,空间使用低,内存使用低;批量插入快
    • 缺点:不支持外键,不支持事务;
    • 全文索引
      • 类似于LIKE语句,把包含一定的字符串的的行记录挑选出来,但比like语句更智能
      • 不仅仅只是把所有满足条件的行记录挑选出来,而且会根据行中词的数目、唯一词的数目、整个索引中词的总数、包含该词的行的数目这些因素计算出来一个“等级”。等级越大代表越有可能是我们需要的记录, 然后Mysql会把高等级的行记录先显示出来,亦即把更可能是我们需要的搜索结果先显示出来。这就是智能的涵义。

6、MySQL事物的四大特性

事务:把一组密不可分的操作系列集合在一起,这些操作要么全部执行,要么全部不执行。
1.原子性:事务是内定义的操作是一个整体,是不可分割的。
2.一致性:同一个事务,多次读取数据库中的同一个数据,读取的内容应该是一致的,不变的。
3.隔离性:不同事务之间相互独立,互不干扰。
4.持久性:事务提交后,事务内的操作对数据库的修改被永久保存在数据库文件中。

7、如何优化慢SQL

参考:https://mp.weixin.qq.com/s/kOIti1ZHdHOb1Yv-OZNROg

8、查询优化原理分析

参考:https://mp.weixin.qq.com/s?__biz=MzI2NTAzNzgxNw==&mid=2247535152&idx=1&sn=9f486ce3cb21a780d4ec6caa9629a3c2&chksm=eaa178a6ddd6f1b0b6c6f1039602e25f362b7c83830ea6a1ef46920eb3fe5f054b792379f1a3&scene=21#wechat_redirect

9、事务的隔离级别

https://blog.csdn.net/zhouym_/article/details/90381606