SQL脚本运行期间的慢速融合

问题描述 投票:1回答:2

我们的Atlassian Confluence系统存在问题。

基本上我们有一个服务器,它与我们的Confluence和Jira协作系统共享我们的主要负载的SQL脚本,这些脚本为本月的生产部分进行数据转换。

值得注意的是 - 我们注意到在运行大型脚本并尝试访问Confluence页面时出现了一些巨大的减速,无论汇合操作如何(渲染页面,编辑页面,创建页面)......它们都陷入困境,最终等待几秒钟才能发生。

我们刚刚开始记录事务级别。它们如下:

在脚本运行时打开常规和慢速查询日志。

在此期间注意到汇合处的过度活动:下午12:33:01到下午13:27:16的SQL语句发布次数:

  1. 汇合144,691
  2. 吉拉6,940

对于汇合,每秒43.85的声明。对于汇合声明,顶部是:

提交38,286 SET autocommit = 1 28,519 rollback 27,809 SET autocommit = 0 27,809 SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED 27,809 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE阅读27,809 SELECT @@ session.tx_isolation 712

主要关注点是BOLD

所以我的问题是......在一段时间内,Confluence在发布这么多的事务级别读取是什么......?

即使是回顾数据库的内部处理,也不应该多次回顾数据库,无论是安全检查还是渲染数据......

那么,Confluence又做了什么?如果有人知道......这只是它的运作方式吗?我很想知道其他人的Confluence日志是否显示相对测量...

为什么会放慢速度?这是资源共享问题吗?

mysql sql resources confluence
2个回答
3
投票

Confluence可以在会话级别配置数据库隔离级别,也可以依赖mysql的全局配置。

我的猜测是你的Confluence实例每个会话设置一次隔离级别。尝试全局配置隔离级别。有关如何执行此操作的说明,请参阅Confluence knowledge base

基本上,你只需要添加

事务隔离= READ-COMMITTED

到你的my.cnf文件

更一般地说,您可能希望查看MySql的Confluence安装指南,并确保按照他们的推荐方式配置数据库(请参阅https://confluence.atlassian.com/display/DOC/Database+Setup+For+MySQL#DatabaseSetupForMySQL-Step3.ConfigureMySQLServer)。


1
投票

不建议添加全局设置。 请参考这个link

根据这篇文章,在3.5.6或更高版本中,建议不要将transaction-isolation=READ-COMMITTED添加到my.cnf

我在atlassian / application-data / confluence下检查了confluence.cfg.xml,默认情况下hibernate.connection.isolation属性为2.(汇合V5.4.4)

所以我更喜欢忽略恼人的mysql日志,因为汇合工作正常: 110 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ<br> 108 Query SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

© www.soinside.com 2019 - 2024. All rights reserved.