数据库并发队列参数调优
数据库提供两种手段进行并发队列的控制,全局并发队列和局部并发队列。
全局并发队列
全局并发队列采用GUC参数max_active_statements控制单个CN上运行并发执行的作业数量。采用全局并发队列机制将控制所有普通用户的执行作业,不区分复杂度,即执行语句都将作为一个执行单元,当并发执行的作业数量达到此参数阈值时,将进入队列等待。对于管理员执行的作业,不走全局并发控制逻辑。
设置该GUC参数数值时,需要考虑系统的承受能力,主要关注内存的使用情况及IO的使用情况,综合判断。若普通用户关联资源池,并且资源池中的优先级比例不同,全局并发队列在数据库内部将使用两维队列,即优先级高低排队和同一优先级进行排队。在唤醒时,将优先唤醒高优先级队列的作业。
说明:
- 如果参数max_active_statements设置为-1,也就是不限制全局并发数,会导致通信大并发下存在连接断开报错。
- 在点查询的场景下,参数max_active_statements建议设置为100。
- 在分析类查询的场景下,参数max_active_statements的值设置为CPU的核数除以DN个数,一般可以设置5~8个。
局部并发队列
采用资源池局部并发控制机制的目的是控制在一个CN上同一资源池内的并发作业数量。局部并发控制机制根据执行作业的cost,控制复杂查询的并发作业数量。
参数parctl_min_cost数值用于判断执行作业是否是复杂作业。
查看更多:华为GaussDB 200 数据库系统参数调优
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。