Mysql锁有哪些,如何理解

按锁粒度分类:

  • 行锁:锁某行数据,锁粒度最小,并发度高
  • 表锁:锁整张表,锁粒度最大,并发度低
  • 间隙锁:锁的是一个区间

还可以分为:

  • 共享锁:也就是读锁,一个事务给某行数据加了读锁,其他事务也可以读,但是不能写
  • 排它锁:也就是写锁,一个事务给某行数据加了写锁,其他事务不能读,也不能写

还可以分为:

  • 乐观锁:并不会真正的去锁某行记录,而是通过一个版本号来实现的
  • 悲观锁:上面所的行锁、表锁等都是悲观锁

在事务的隔离级别实现中,就需要利用锁来解决幻读

Mysql慢查询该如何优化?

  1. 检查是否走了索引,如果没有则优化SQL利用索引
  2. 检查所利用的索引,是否是最优索引
  3. 检查所查字段是否都是必须的,是否查询了过多字段,查出了多余数据
  4. 检查表中数据是否过多,是否应该进行分库分表了
  5. 检查数据库实例所在机器的性能配置,是否太低,是否可以适当增加资源

1、数据库主从概念、优点、用途

主库:master,从库:slave
主库对外提供读写服务,从库提供读服务
优点:
实现高可用,实时灾备,用于故障切换。
读写分离,减少主库压力,提升性能。
数据备份功能。

2、主从复制原理

1、master有一个bin_log二进制文件,记录主库所有增删改操作。
2、slave把主库bin_log日志复制到自己的中继日志relay_log。
3、slave读取relay_log日志,执行一次读取到的增删改动作。