1——log sequence number字节,从数据库开启到现在已经产生这么多日志了,LSN,日志序列号,单位是字节数,表示当前最新数据产生的日志序列号,
可以计算日志的产生速度:每日日志产生量=今天早上-今天晚上)/24h 也可以做成每小时的日志量趋势图,或者做成每月的趋势图或者每天的,通过趋势图的规律可以监测出出现的异常点,也可以为突增的时刻提前做好防备。
2——log flushed up to 字节,表示日志已经刷新到到那个点了(在 redo log
中),<=lsn Lsn - log flush up to:log buffer 里面有多少日志,也可以体现出日志的生成速度来。如果系统 hang 住了,可以 show看一下 lsn-flush是否=log buffer的大小,如果等于就说明是log buffer满了导致系统hang住了
3——pages flushed up to 字节,脏页已经刷新到哪个点了,表示在这之前的logfile 里旧的日志可以被覆盖了,表示最旧的脏页的值。这个值如果很靠近旧日志端,表示可以覆盖的 logfile 日志很少,脏页写的很慢。可以通过监控 2-3 的值来做脏页的波动,每隔多少时间
2-3 表示不可覆盖的脏页的量,相减的值必须小于6G(共 5个日志,每个2G,因为正在用着一个,用的这个不能被覆盖,所以还得有一个可以覆盖的, 所以少了2+2=4G。因为要保证脏页都写入到磁盘上才能被覆盖)。
如果2-3的值小,也就是3 page 特别接近2 flush的话,表示能被覆盖的logfile 就多,表示脏页刷新的速度快。如果2-3的值大表示脏页刷新的速度慢, 能被覆盖的logfile 少,可能会出现 logfile 不能被覆盖的情况。如果一个 logfile文件2G,2-3的值至少大于一个文件的大小2G,意思是至少有一个 logfile 文件可以被覆盖。
假如有5个log file,每个2G,2-3=不可以被覆盖的脏页的量<3 个logfile,说明正在写的redo log占用一个,已经能被覆盖了的有一个,还有3个不可以被覆盖。(内存中的脏页被 flush 链按照最早脏的时间链起来)。
4——last check point at字节,表示最后一次检查点的log位置,一个检查点表示一个数据和日志文件都处于一致状态的时刻,并且能用于数据恢复。他的值表示系统启动时从哪个点去恢复,redo log去做崩溃恢复时指定的起点,是把内存中脏链上最早脏的点记录到磁盘上,崩溃时可能最新的几个脏页丢失了没写入磁盘,所以 checkpoint还没来得及记录(最新的log buffer崩溃了也丢了但是没关系,因为事务是没提交的丢就丢了)。去做崩溃恢复时,终点是最新的一条logfile,起点就是checkpoint记录的最早脏的点,如果一共5个,每个2G,共10G,恢复时需要跑,能少跑当然最好,如果checkpoint的点在距离2有6G处, 也就是需要跑6G,那4G 不用跑,如果跑的话也不会有影响,是空跑(为什么?
数据页上有时间点,日志里也有时间点,如果日志的时间点比数据页上的时间点旧,就空跑),能少跑就少跑的话,就需要系统把内存里最早脏的页记录到数据文件里,这样就能指定日志恢复的起点。把内存中最早脏的页记录到数据文件中这个动作就叫做checkpoint,4是指定系统启动时日志恢复的起点。4的值往往比3要小,因为不可能实时的记录,在记录之后,几秒后,内存中最早脏的页已经刷新到磁盘了,最早脏的已经被后面的脏页替换了,所以这几秒内的页并没有被记录到磁盘。
3-4表示checkpoint这个动作的跟进速度。值大表示需要提高checkpoint的跟进速度。
2-4表示崩溃后日志要恢复的量。