2024.12.27复习日记

2024.12.27复习日记

os

进程管理:

首先是操作系统,cpu,进程三者之间的关系

操作系统操作cpu,去执行进程,其中进程执行顺序,执行多长时间,以及进程间的调度都是由操作系统完成的,cpu只负责执行。不过进程本身也具有储存数据的功能,比如说储存自己执行到哪里了,以便下一次执行时从该位置往下继续执行

进程的状态

创建状态,运行态,就绪态,阻塞态,就绪挂起态,阻塞挂起态,结束状态

预读失效和缓存污染

预读失效主要原因是cpu从硬盘读数据到内存中时,由于计算机的局部性原理,常常会用到读取的那一页数据的相邻数据,所以会连着读取除了要用的数据之外的几页数据到内存中。假如LRU缓存可以存10页的数据,读来了5页的数据,那连着读过来的那4页数据放在LRU缓存中的头部,就把原来的6,7,8,9,10都给挤掉了,但是连着读来的那几页后续又没有被访问到,热点数据又被挤掉了,后续访问热点数据就又要1次磁盘I/O严重影响了速度。

为了解决这个问题,Linux用两个LRU链表来缓存数据,一个是ActiveLRU,一个是InActiveLRU,假如读来的数据页是11-15,11数据页读完后立刻被使用了,也就放入ActiveLRU,而12-15就放在InActiveLRU。这样连着读来的数据页也不会挤掉热点数据。MYSQL则是在LRU中分为YOUNG和OLD两块区域,其占比位63:37,读来的没有被访问的数据放在OLD区,被访问的数据放在YOUNG区

缓存污染主要是在执行SQL语句的时候如果进行全表扫描并且索引失效,会连续读来非常多的页数据,这样的话所有的数据都被干到ActiveLRU和YOUNG区,把热点数据又给挤掉了,究其原因是升级的条件不够苛刻。所以为了解决这个问题Linux将升级的条件设为InActiveLRU中的数据被访问两次,MYSQL将升级条件设为被访问两次,且第二次访问与第一次访问相距的时间小于1秒

数据库

  1. ER图,关系模式,函数依赖,1NF,2NF,3NF
    判断2NF:看是否有包含函数依赖。1NF没有包含函数依赖就是2NF
    判断3NF:看是否有传递函数依赖。2NF没有传递函数依赖就是3NF
  2. REDO和UNDO
    这是基于日志的数据库故障恢复。REDO即重做,UNDO即回滚。
    REDO适用于已提交的事务,事务已经提交,但是由于系统故障,可能更新的数据未能完全写入数据库,因此重做该事务将数据库恢复到最新的提交状态
    UNDO适用于未提交的事务,用于撤销未提交的事务操作
  3. 关系代数和SQL语句
    没什么好说的
  4. 磁盘块索引运算和B+树
  5. 语法树优化
posted @ 2024-12-29 13:11  vast_joy  阅读(1)  评论(0编辑  收藏  举报