造火箭基础篇-数据库

数据库事物
  • 数据库事物的四大特性?
    1 原子性 2 隔离性 3 持久性 4 一致性
  • 数据库隔离级别?
    1 read-uncommitted 2 read-committed 3 repeatable-read 4 serializable
    MySQL的innodb引擎默认的 repeatable-read
  • 各种隔离级别对应出现的问题?
    1 read-uncommitted
    会出现:脏读,不可重复读,幻读
    2 read-committed
    会出现:不可重复读,幻读
    3 repeatable-read
    mvcc 和 read-view 解决了幻读
    4 serializable
    强一致性
  • 什么叫mvcc? mvcc有什么缺点?
    一行记录可能不止一个快照,这种技术称为多版本控制。mvcc也叫做非一致性读,也就是分:读快照和读当前。
    缺点:因为mvcc读取的数据是快照的数据,并不是真是的数据,因此在对于特别敏感的数据可能会有问题。
数据库锁
  • MySQL的innodb引擎和myisam引擎有什么区别?
    1 innodb引擎是采用行锁,myisam采用的是表锁,所有innodb可能会发生死锁,myisam不会发生死锁。
    2 innodb是支持事物的,myisam是不支持事物的
  • MySQL有哪些锁,都有哪些区别?
    1 类别来分: 共享锁,互斥锁
    select * from table lock in share mode 就是一个共享锁的例子
    delete from table
    insert into table
    update table set
    select * from table for update 这些都是采用的互斥锁
    2 从粒度来分:
    表锁,行锁,间隙锁
    表锁:一次锁上一张表,并发能力比较弱,不会产生死锁。
    页锁:锁一页,并发在行锁和表锁之间,会产生死锁
    行锁:一次锁一行,并发能力高,会产生死锁。
    间隙锁:锁在行与行之间,只要是为了解决幻读。
    还有一个需要注意的是:MySQL的加锁都是针对索引的,如果没有索引就会锁整张表。
  • MySQL死锁怎么产生?如何解决死锁?
数据库索引
  • MySQL innodb索引?
    索引分为:聚簇索引和非聚簇索引
    聚簇索引的特点是:叶子节点保存的就是数据
    非聚簇索引的特点是:叶子节点保存的主键(聚簇索引的位置),然后通过聚簇索引找值
  • MySQL索引的类型?
    1 主键索引
    2 唯一性索引
    3 普通索引
    4 联合索引
  • MySQL联合索引使用是有什么规则?如果对A,B,C做索引,那么SQL语句写成where C=X and B=X and A=X,是否还能用到该索引?如果SQL语句写成where A=X and B>X and C=X是否还能用到该索引?
    联合索引采用的是最左匹配原则。
    mysql 可以帮你优化所以可以使用到索引
    可以使用到索引
    索引的规则是:A可以 B不可以 C不可以 AB AC ABC可以 BC不可以
数据库其他相关
  • MySQL log的几种日志录入格式以及区别?
    1 undo log 主要是为了做回滚使用的,记录的是操作的相反。
    2 redo log 主要是记录的数据的操作,用来做事物的。
    3 bin log 主要是用来做主从同步的。
  • MySQL如何做主从同步?
    可以使用MySQL的binlog做主从同步,参考文章:主从同步
  • MySQL主从复制延迟如何产生?如何解决?
    MySQL的主从复制特点:异步,单线程
    常见的主从延迟原因:
    Master 上,SQL 执行速度慢:优化索引,提升索引区分度
    Master 上,批量 DML 操作:建议延迟至业务低峰期操作
    Master 上,大事务,耗时长:优化业务,拆分为小事务
    Master 上,多线程写入频繁, Slave 单线程速度跟不上:提升 Slave 硬件性能、借助中间件,改善主从复制的单线程模式
    整体上 2 个策略,齐头并进:
    内部解决:减弱主从复制的延迟
    外部解决:缓存层,在前端访问和数据库之间,添加缓存,优先从缓存读取,减弱数据库的并发压力,Slave 只作为数据备份,不分担访问流量;
    减弱主从延迟,采取措施:
    提升 SQL 执行速度:优化索引
    优化业务逻辑:通过读取操作,业务逻辑上,减少不必要的 DML
    细化事务:将大事务拆为小事务,不必要的地方移除事务
    减少批量操作:批量 DML 的耗时较多,减少不必要的批量 DML

你可能感兴趣的:(造火箭基础篇-数据库)