面试整理

mysql binLog redoLog undoLog

  • redo log和undo log是在引擎层实现的,且是innodb引擎独有的,主要和事务相关、
  • binLog是服务层实现的
    bin log中记录的是整个mysql数据库的操作内容,对所有的引擎都适用,包括执行DDL、DML,可以用来进行数据库的恢复及控制。
    redo log中记录的是要更新的数据,比如一条数据已提交成功,并不会立即同步到磁盘,而是记录到redo log中,等待合适的时机再刷盘,为了实现事务的持久性。
    undo log中记录的是当前操作的相反操作,如一条insert语句在undo log中会对应一条delete语句,在任务回滚时会用到undo log,实现事务的原子性,同时会用在MVCC中,undo会有一条记录的多个版本,用在快照读中。

线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。

内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。

引起内存溢出的原因有很多种,常见的有以下几种:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小;

内存溢出的解决方案:
第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。

第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

你可能感兴趣的:(面试整理)