在某个项目中上了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数据性能页面的编写变得简单可维护多了.