Aurora数据库:性能优化与故障处理全解析
1. 用户请求处理与提交机制
在Aurora中,当接收到用户请求时,用户会话会被多路复用到工作线程。当收到提交请求时,工作线程会执行以下操作:
1. 写入提交记录。
2. 将事务放入提交队列。
3. 返回公共任务队列,查找下一个要处理的请求。
当驱动线程推进VCL(Volume Complete LSN)时,会唤醒一个专用的提交线程,该线程会扫描提交队列,查找低于新VCL的SCN(System Change Number),并向等待提交的客户端发送确认信息。这种机制避免了组提交带来的延迟,也不会让工作线程出现空闲时间。
2. 崩溃恢复机制
Aurora通过管理数据库实例中的一致性点,避免了写入和提交时的分布式共识。但实例可能会出现故障,如客户关闭、调整大小或恢复到旧时间点。在正常的提交处理中节省的时间,需要在崩溃恢复时重新建立一致性来偿还。不过,由于提交操作比崩溃发生的频率高很多个数量级,所以这种权衡是值得的。
2.1 崩溃恢复流程
当打开数据库卷进行崩溃恢复或正常启动时,数据库实例需要完成以下步骤:
1. 为构成卷的每个保护组至少达到读法定人数。
2. 通过在SCL(Segment Change Log)中找到读法定人数一致性点,本地重新计算数据库的PGCL(Protection Group Change Log)和VCL。
3. 可能会存在一些更新的参差不齐的边缘,这些代表未完成的部分写入,数据库会通过记录截断范围来剪掉这些边缘,确保即使在崩溃恢复过程中异步操作完成,也会被忽略。
4. 崩溃恢复
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



