搜索
写经验 领红包

为什么用mysql数据库(为什么数据库越来越重要)

导语:MySql数据库重要知识点:数据库为什么会“抖”

为什么用mysql数据库(为什么数据库越来越重要)

1:MySQL抖一下是什么意思?抖我认为就是不稳定的意思,一个SQL语句平时速度都挺快的,偶尔会慢一下且没啥规律,就是抖啦!2:MySQL为啥会抖一下?因为运行的不正常了,或者不稳定了,需要花费更多的资源处理别的事情,会使SQL语句的执行效率明显变慢。针对innoDB导致MySQL抖的原因,主要是InnoDB 会在后台刷脏页,而刷脏页的过程是要将内存页写入磁盘。所以,无论是你的查询语句在需要内存的时候可能要求淘汰一个脏页,还是由于刷脏页的逻辑会占用 IO 资源并可能影响到了你的更新语句,都可能是造成你从业务端感知MySQL“抖”了一下的原因。3:MySQL抖一下有啥问题?很明显系统不稳定,性能突然下降对业务端是很不友好的。4:怎么让MySQL不抖?设置合理参数配配置,尤其是设置 好innodb_io_capacity 的值,并且平时要多关注脏页比例,不要让它经常接近 75%5:啥是脏页?当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。按照这个定义感觉脏页是不可避免的,写的时候总会先写内存再写磁盘和有没有用WAL没啥关系?6:啥是干净页?内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。7:脏页是咋产生的?利用 WAL 技术,数据库将随机写转换成了顺序写,大大提升了数据库的性能。但是,由此也带来了内存脏页的问题。脏页会被后台线程自动 flush,也会由于数据页淘汰而触发 flush,而刷脏页的过程由于会占用资源,可能会让你的更新和查询语句的响应时间长一些8:啥是随机写?为啥那么耗性能?随机写我的理解是,这次写磁盘的那个扇区和上一次没啥关系,需要重新定位位置,机械运动是很慢的即使不是机械运动重新定位写磁盘的位置也是很耗时的。9:啥是顺序写?顺序写我的理解是,这次写磁盘那个扇区就在上一次的下一个位置,不需要重新定位写磁盘的位置速度当然会快一些。10:WAL怎么把随机写转化为顺序写的?写redolog是顺序写的,先写redolog等合适的时候再写磁盘,间接的将随机写变成了顺序写,性能确实会提高不少。

11:其他

redo log是关系型数据库的核心啊,保证了ACID里的D。所以redo log是牵一发而动全身的操作按照老师说的当内存数据页跟磁盘数据页不一致的时候,把内存页称为&39;。如果redo log设置得太小,redo log写满.那么会涉及到哪些操作呢,我认为是以下几点:1.把相对应的数据页中的脏页持久化到磁盘,checkpoint往前推2.由于redo log还记录了undo的变化,undo log buffer也要持久化进undo log3.当innodb_flush_log_at_trx_commit设置为非1,还要把内存里的redo log持久化到磁盘上4.redo log还记录了change buffer的改变,那么还要把change buffer purge到idb以及merge change buffer.merge生成的数据页也是脏页,也要持久化到磁盘上述4种操作,都是占用系统I/O,影响DML,如果操作频繁,会导致&39;得向现在我们过冬一样。但是对于select操作来说,查询时间相对会更快。因为系统脏页变少了,不用去淘汰脏页,直接复用干净页即可。还有就是对于宕机恢复,速度也更快,因为checkpoint很接近LSN,恢复的数据页相对较少所以要控制刷脏的频率,频率快了,影响DML I/O,频率慢了,会导致读操作耗时长。

本文内容由小茹整理编辑!