本文向您展示了如何理解MSSQL数据库的后台进程。内容简洁易懂。它一定会让你的眼睛发光。希望通过这篇文章的详细介绍,你能有所收获。
类似于Oracle数据库,微软数据库产品MSSQL也有很多后台进程,保证数据库系统的高效正常运行。因为MSSQL采用了线程模型,所以应该叫后台线程。为了大家容易理解,我们暂时称之为后台进程。让我们简单了解一下:
类似于Oracle数据库,微软数据库产品MSSQL也有很多后台进程,保证数据库系统的高效正常运行。因为MSSQL采用了线程模型,所以应该叫后台线程。为了大家容易理解,我们暂时称之为后台进程。让我们简单了解一下:
1.数据写入相关流程
1) Lazy writer:这个过程用于确保系统缓冲池中有足够的空闲内存。该过程定期扫描缓冲区内存页面,找出不常用的内存页面,并将其移出缓冲区。在此期间,脏页数据将被写入磁盘,缓冲区将首先被删除。
2)急切写入器:与懒惰写入器类似,这个进程也负责将缓冲区中的脏页写出到磁盘,但它写出来的这些内存页主要与非日志(如大容量插入、选择进入)操作有关,在此期间允许并行读写新页。
3)检查点:该进程定期扫描缓冲区以查找特定数据库的脏页,并将这些脏页写入磁盘。通过创建一个时间点,在此时间点之前,所有脏页都将被写入磁盘,可以减少最近数据库恢复所需的时间。用户可以通过提交检查点命令来请求检查点操作,或者系统可以根据消耗的日志空间或时间自动生成检查点操作。此外,系统中的一些事件也会导致检查点,如添加或删除数据文件或日志文件、关闭实例等。当检查点出现时,进程会将缓冲区中的脏页写入磁盘,而不管相关事务是否已提交。
值得一提的是,这三个后台进程是异步的,即它们可以在执行IO操作的同时做其他工作,之后再检查之前IO的完成情况。
2.事务日志相关流程
1)日志编写器:该进程负责将事务日志从缓冲区刷新到磁盘日志文件。在MSSQL2016之前,每个实例中只有一个日志编写器进程,因此该进程负责实例中的所有数据库日志缓冲区。进程通过异步IO将日志缓冲区写入磁盘。当用户提交事务时,该过程会阻止用户的会话,直到相关数据库的日志缓冲区数据被刷到磁盘上。同时,该进程可以继续其他数据库日志缓冲区的工作。MSSQL系统中的很多事件都会触发日志编写器进程将日志缓冲区的内容写到磁盘上,比如:会话提交当前事务、日志缓冲区已满、检查点等。
此外,当进程将lredo记录从日志缓存/缓冲区写入磁盘日志文件时,写入单位可以更改,范围从512到64k。在这方面,与数据缓冲区写入过程不同,最小值必须是数据页大小。
2)备份日志:虽然这个过程严格来说不是后台过程,但因为是用来完成用户发出的“备份日志……”命令,所以和事务日志有着密切的关系。
3.相关过程的系统监控和管理
1)信号处理程序:这个过程主要负责MSSQL实例的启动和关闭。
2)任务管理器:该进程还会参与MSSQL实例的启动过程,主要用于启动与该实例相关的所有数据库。此外,这个进程还负责启动MSSQL的一些内部任务,并监控实例服务进程和启动时间。
3)资源监控:这个过程主要负责监控内存级别的使用情况和状态,必要时调整MSSQL相关的缓冲区。当检测到没有正在处理的用户需求时,将自动进入空闲状态。
4)锁监控器:该进程负责监控阻塞时间超过系统相关阈值的场景,同时还负责解决死锁问题。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/124812.html