修改testlink使其适应大数据量
来源:互联网 发布:淘宝客建站平台 编辑:程序博客网 时间:2024/06/07 20:31
即使安装在Oracle数据库上,testlink仍无法充分利用数据库的性能。做了个实验,从QC的数据库中转换了9万个案例(包括目录结构、设计步骤)到TL的库,发现没法使用。主要的问题是TL设计时没有考虑性能问题,大量使用IN(id, id, id...)的形式做查询。
为此需要对TL做一些改动。因为仅适用于Oracle库,所以不适合提交到TL项目,就自己用吧。
到目前为止的改动:
1、首页上有一个判断是否有Testcase的函数,是取所有TestCaseID,然后判断列表长度是否大于0(-_-!);修改这个sql,直接查tcversion有无记录即可;再进一步,完全可以把这个判断去掉。
2、改造 IN (list)。思路是把它改为子查询。
具体实现有些费劲,因为子查询中的select语句参数中也不能支持大文本数据。但(insert + 绑定变量)可以。 于是在数据库建立global temporary table,是仅有一个ID字段的表,设置成on commit preserve rows;在testlink的database.inc.php新增一个wrap_list函数,内容是:先删除临时表;再用存储过程把逗号分隔的list参数分解成id,插入临时表,然后返回一个子查询语句“select id from temp_id_table”。这样,testlink的 in ({$idList})就可以改写成 in ({$this->db->wrap_list($idList)})。
另外,testlink的database类不支持绑定参数,稍微改造一下就可以了。
这两步做好以后,浏览和编写案例基本上就没问题了;但搜索案例仍有问题。继续改搜索:
1、搜索代码中有个逻辑,如果没填caseID,就在sql中加一个 and id in (项目中所有caseid)。这个地方唯一的作用就是把搜索限制在指定的项目中。我的思路是在案例上增加项目信息,就可以筛选了。具体做法有点取巧:在nodes_hierarchy的tcversion节点的name字段记录projectID(反正这个字段没有被TL使用)。为此需要修改create testcase version的方法(有两处)。
2、搜索时会查两遍,第一遍查count(*),第二遍才查具体信息。这个没有必要,改为只查一遍(加limit)。
- 修改testlink使其适应大数据量
- vector在数据量大时的修改
- sqlserver几个可提高性能和适应大数据量的办法(存储优化)
- Testlink中文问题修改
- testlink修改邮件配置
- Jenins插件修改-TestLink
- testlink修改默认端口
- 一个大数据量的修改SQL优化问题
- T-SQL 如何批量修改/转移大数据量数据.
- SQLite 大数据量 新增 / 修改 提升效率的办法
- UILable的设置使其内容适应屏幕的大小
- 使其适应相应的iphone大小展示
- [Mapbox GL]调整LineString使其适应地图边界
- TextView设置wrap_content时,使其宽高适应文字内容大小而不是适应background大小
- Testlink上传文件上限修改
- 修改navigationbar适应iOS7
- Android大分辨率适应
- 在线修改大表为分区表或更改其索引
- poj 2562 Primary Arithmetic
- JSON
- iOS NSOperationQueue的使用
- WPF学习
- 【状态压缩】【动态规划】状压DP复习
- 修改testlink使其适应大数据量
- android 设置progressbar的背景颜色
- 分享舍得网开发过程
- windows服务的撰写方法
- VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
- Oracle.apps.fnd.cp.request包常用java类分析
- 设计模式笔记21:中介者模式(Mediator Pattern)
- hibernate如何实现延迟加载
- Proguard For Amazon IAP