-
辰哥 管理员
发表于2018-12-19 09:51
楼主
BI四处数据库连接池你通晓它的内容和作用吗?
在亿信BI中,共有4处可配置数据库连接池。那什么是数据库连接池?这4处数据库连接池有何种作用,分别都保存哪些相关文件呢?这就是今天要介绍给大家的内容。
数据库连接池技术
数据库连接池技术其实是一种缓存策略。
因为数据库连接是一种关键的、有限的、昂贵的资源;并且创建一个连接相当耗时,如果每次用户需要访问数据库时都建立一个新的连接,会显著影响到整个应用程序的性能指标。
所以程序设计人员就想到了采用缓存的机制,当建立了一个连接并使用完毕以后并不是立即释放丢弃,而是缓存到BI系统中。当用户再次访问数据库的请求就直接从缓存中提取现成的(前提是主要能够有效的管理、分配和释放连接就可以了)。
在添加数据库连接池时,还可以定义一组性能配置参数参数。
数据库连接池的参数可勾选【高级选项】配置:
【参数详解】
参数 | 名称 | 描述 | 说明 |
catalog | 目录 | 链接存储的初始化目录 | 可定义连接池初始化存储的路径 |
maxActive | 最大活动链接数 | 连接池中允许保持的最大连接数 | 这个数值表示系统最多同时操作数据库的数量,比如说maxActive=80,目前已经有80个用户正在向数据库写数据,第81个用户只能等待写数据完成并被释放的连接。此数值一般要小于或者等于服务容器配置的线程池最大数。 oracle下我们可以通过show parameter processes/sessions查看最大进程数和会话数,alter system set processes/sessions=300 scope=spfile修改 。 |
maxWait | 最大等待时间 | 当连接池中的连接都被占用, 等待连接释放的时间 | 这个数值不能太大,太小也不行;默认是10000毫秒。 |
logLevel | 数据库日志级别 | 日志记录的级别 | 共5种:默认为ERROR。 DEBUG:记录的最详细,包含INFO级别,记录每个执行的sql,耗时,对sql的传值等; INFO:包含WARN日志,记录连接池状态(创建连接池,什么时候获取连接,什么时候关闭连接,关闭连接池信息); WARN:包含ERROR日志,记录每次获取连接的堆栈,用于检查连接有没有关闭(回收),记录每次创建statement堆栈,用于判断关闭连接前是否关闭创建的statement,记录嵌套获取连接警告; ERROR:包含FATAL日志,记录从连接池获取连接超时的异常,记录从连接池无法获取连接的异常等,记录sql执行出错异常; FATAL:记录创建连接异常(数据库没有启动等),连接没有关闭提示,这里不记录该连接的堆栈,要找到它,请使用WARN级别。 |
默认的数据库连接池可生成jdbc.conf文件,其内容如下所示:
何处配置数据库连接池
在BI中,有以下四个地方可以设置数据库连接池:
1. 默认数据库连接池,即在安装BI过程中初始化的数据库连接池;
(此数据库连接池内容保存在工作目录中conf文件下,名为jdbc.conf)
【存储内容】
对于默认数据库连接池来说,我们新建的用户、以及给用户设置的权限、门户上的配置、维表定义的结构、主题域、主题集的配置文件、数据库连接池中创建的各相关数据库连接池都是保存在默认数据库中。
2. 主题域属性中可单独设置;
【存储内容】
该连接池主要保存有主题域对应的维表的数据,当然,如果此主题域下的主题集或每个主题集对应的存储连接池为空,则主题域对应的数据库连接池还会保存有主题集中维表的数据、主题表对应的数据库表分析表的表样和数据。
3. 主题集属性的“数据表映射设置”可单独设置;
【存储内容】
在【数据表映射】设置的数据库连接池,主要保存主题集对应的维表的数据和主题集中每个主题表对应的数据库表。
4. 分析表的表样和存储结果也可以单独设置连接池。
【存储内容】
在【基本属性】设置的存储连接池,主要保存分析表的表样和表的计算结果。(在每个主题集属性中都可以去设置存储连接池)
【关联表】
关联表的名称根据版本及主题集的名称生成各不相同。
数据库表 | 说明 | |
EBIXX_RPT_XXX | 保存分析对象最新的主分支 | |
EBIXX_BRA_XXX | 保存分析对象最新的分支 | |
EBIXX_HIS_XXX | 保存分析对象所有分支的所有版本 | |
EBIXX_PRE_XXX | 保存分析对象的预览信息 | |
EBIXX_RES_XXX | 保存分析对象的计算结果 | |
EBIXX_RES_RELATE_XXX | 保存预计算的相关信息 |
当然,如果你的所有分析数据源和服务器产生的系统表都在同一个数据库连接池A中,上述这四个地方的数据库连接池均可配置为A。
清楚各数据库连接池的用途后,我们在实际操作中需要慎重使用。
下面由一个例子来展开说明:
当服务器上有a,b,c三个主题域,且每个主题域中所有主题表对应的数据库表都有自己单独的数据库连接池为alist,blist,clist,服务器上默认的数据库连接池为ali。
此时,a主题域中所对应的数据有更新,拿到了一个pde文件(注:该pde文件是同事在客户的环境下导出的文件),并交给数据库工程师将数据导入到alist数据库连接池中,数据库工程师在导入时是先删除表再导入新的数据,导完后,重启BI服务器,发现服务器上只有a主题域,之前的b,c主题域已不复存在。
出现上述现象的原因:因为服务器默认的数据库连接池是a主题域对应的数据库连接池alist,而alist又重新导入数据,导致之前保存的信息已不复存在。
教训:在操作BI服务器时,默认的数据库连接池最好单独建库,不要与某个主题域或主题集对应的数据库连接池一致,以免造成上述情况。
了解了何处配置数据库连接池,现在我们学习下如何创建数据库连接池。
假设现在BI服务器已初始化完成,某个主题域需单独配置一个数据库连接池。
【第1步】
新建数据库连接池:
【第2步】
配置数据库连接池内容:
【名称】连接池名称,区分多个连接池,只支持数字字母下划线。
【描述】对连接池可作详细描述。
【数据库】选择数据库类型,此处默认可选12种,依次为:BD2,DM,Essbase,GBase,GreenPlum,KingBaseES,Mysql,Netezza,Oracle,PetaBase,SQL Server,Sybase;除此之外,还可配置其它类型。
【驱动类名】数据库驱动的类名;若是12种数据库内,当选择数据库类型时,默认已输入内容并隐藏。
【链接地址】链接数据库的地址,不同数据库格式不同。
【用户名】数据库用户名。
【密码】数据库用户密码。
【高级设置】连接池参数已作详细介绍,此处不再赘述。
【第3步】
测试数据库连接池是否配置成功,并保存。
如果测试成功,提示:
如果测试失败,给出连接失败提示信息: