经验 120 分贝 0 家园分 499 在线时间: 89 小时 最后登录: 2024-10-20 帖子: 46 精华: 0 注册时间: 2009-2-13 UID: 331997
注册:2009-2-13 1
发表于 2010-4-23 15:59:07
| 显示全部楼层
DataReport中的FORALL循环
在某个项目中上了10台MySQL数据库, 编写了几段脚本收集了MySQL及主机的性能信息, 如CPU利用率, 系统负载, MySQL中的事务数, 查询数量等. 在使用DataReport编写一个页面展示10个Master库的负载信息时, 发现要写很多的SQL语句, 比较繁硕, 若有调整, 更加麻烦. WEBCHART.QUERY_1=select … from mysql_load where host=’mysql1′
WEBCHART.QUERY_2=select … from mysql_load where host=’mysql1′
WEBCHART.QUERY_3=select … from mysql_load where host=’mysql1′
……
WEBCHART.QUERY_10=select … from mysql_load where host=’mysql1′
同事数次询问有没有循环的功能, 以减轻DataReport页面编写的任务, 经过几番思量, 为其增加了FORALL循环功能.
WEBCHART.FORALL_n= var1=var1 value 1; var2=var2 value 1
var1=var1 value 2; var2=var2 value 2
……
var1=var1 value n; var2=var2 value n
对于FORALL标记的每一行, 都会实行一次第n个定义的循环处理, 比如下面的页面定义.
webchart.xsldoc=xsl/default.xsl
webchart.forall_1=dno=10; title=Dept 10
dno=20; title=Dept 20
dno=30; title=Dept 30
webchart.query_1=select empno, ename
from emp
where deptno = :dno
就会实行三次对EMP表的查询, 分别列出不同部门的员工编号和员工名字, 有了这个功能后, 使得显示10个MySQL Master数据性能页面的编写变得简单可维护多了