检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
UPDATE&DELETE操作规范 建议3.5 避免并发UPDATE/DELETE行存表的同一行 违反规范的影响: 并发UPDATE/DELETE行存表可能导致行锁阻塞和分布式死锁风险,导致业务报错和性能下降。
局部并发控制机制根据执行作业的cost,控制复杂查询的并发作业数量。 全局并发队列参数max_active_statements调整需注意: 如果参数max_active_statements设置为-1,也就是不限制全局并发数,会导致通信大并发下存在连接断开报错。
默认值:32 enable_parallel_ddl 参数说明:控制多CN对同一数据库对象是否能安全的并发执行DDL操作。 参数类型:USERSET 取值范围:布尔型 on表示可以安全的并发执行DDL操作,不会出现分布式死锁。
max_connections 参数说明:允许和数据库连接的最大并发连接数。此参数会影响集群的并发能力。 参数类型:POSTMASTER 取值范围:整型。
连接数据库后,执行以下SQL语句可以查看当前全局最大并发会话数。 1 show max_active_statements; 进入到云监控界面,根据查出的全局最大并发会话数,取70%-80%为阈值即可。
max_connections 参数说明:允许和数据库连接的最大并发连接数。此参数会影响集群的并发能力。 参数类型:POSTMASTER 取值范围:整型。
局部并发控制机制根据执行作业的cost,控制复杂查询的并发作业数量。 全局并发队列参数max_active_statements调整需注意: 如果参数max_active_statements设置为-1,也就是不限制全局并发数,会导致通信大并发下存在连接断开报错。
增大客户端并发数。 父主题: 集群性能
产生原因 GaussDB(DWS)采用多版本控制技术(Multi-Version Concurrency Control,简称MVCC)的并发控制机制保证多个事务访问数据库时的一致性和并发性,其优点是读写互不阻塞,缺点则是会造成磁盘膨胀的问题,而MVCC机制是产生脏页的主要原因。
30%~60%区间段,io_util值每减少15%,并发度增加1。 60%~70%并发度不变。 70%以上并发度减1,如果仍维持70%以上IO,则并发度持续减到0。
解决办法:检查操作的表是否有并发操作。 GAUSS-03742: "attempted to lock invisible tuple" SQLSTATE: XX000 错误原因:尝试加锁的tuple不可见。 解决办法:检查操作的表是否有并发操作。
案例:使排序下推 在做场景性能测试时,发现某场景大部分时间是CN端在做window agg,占到总执行时间95%以上,系统资源不能充分利用。研究发现该场景的特点是:将两列分别求sum作为一个子查询,外层对两列的和再求和后做trunc,然后排序。
max_concurrency_num 否 String 最大并发数。 -1~2147483647 范围之间的整数,其中-1/0表示不限制。 响应参数 表4 响应Body参数 参数 参数类型 描述 workload_res_code Integer 返回状态。
解决方案:需要减少并发序列请求的数量。 level: ERROR GS_209100010 错误码: The definition of the function is null. 解决方案:检查系统表pg_proc中该函数的定义是否完整。
新业务上线 与集群现有业务出现资源争抢,新业务并发、资源消耗不合理时容易造成资源过载导致整体性能劣化。 新业务在测试环境得到充分测试,根据测试结果预估CPU消耗、执行时间、业务并发量等指标,分析新业务执行计划,确保执行计划最优。
客户端工具包包含以下内容: 数据库连接工具Linux gsql和测试样例数据的脚本 Linux gsql是一款运行在Linux环境上的命令行客户端,用于连接GaussDB(DWS)集群中的数据库。 测试样例数据的脚本是执行入门示例时用的。
解决办法:降低业务并发。
有着极致的性能,适用于高吞吐数仓加工,高并发在线查询生产环境。
测试SQL如下: 1 2 3 4 5 SELECT count(1) FROM t_ddw_f10_op_cust_asset_mon b1 WHERE b1.year_mth < substr('20200722',1 ,6 ) AND b1.year_mth + 1
测试SQL如下: 1 2 3 4 5 SELECT count(1) FROM t_ddw_f10_op_cust_asset_mon b1 WHERE b1.year_mth < substr('20200722',1 ,6 ) AND b1.year_mth + 1