经验 122  分贝 0  家园分 528  在线时间: 92 小时 最后登录: 2025-8-8 帖子: 47 精华: 0 注册时间: 2009-2-13 UID: 331997  
 
 
注册:2009-2-13 1 
 
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数据性能页面的编写变得简单可维护多了