You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							102 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							102 lines
						
					
					
						
							3.0 KiB
						
					
					
				| <?php | |
| /*  | |
| V4.55 3 Jan 2005  (c) 2000-2005 John Lim (jlim@natsoft.com.my). All rights reserved. | |
|   Released under both BSD license and Lesser GPL library license.  | |
|   Whenever there is any discrepancy between the two licenses,  | |
|   the BSD license will take precedence. See License.txt.  | |
|   Set tabs to 4 for best viewing. | |
|    | |
|   Latest version is available at http://adodb.sourceforge.net | |
|    | |
|   Library for basic performance monitoring and tuning  | |
|    | |
| */ | |
| 
 | |
| // security - hide paths | |
| if (!defined('ADODB_DIR')) die(); | |
| 
 | |
| // Simple guide to configuring db2: so-so http://www.devx.com/gethelpon/10MinuteSolution/16575 | |
|  | |
| // SELECT * FROM TABLE(SNAPSHOT_APPL('SAMPLE', -1)) as t | |
| class perf_db2 extends adodb_perf{ | |
| 	var $createTableSQL = "CREATE TABLE adodb_logsql ( | |
| 		  created TIMESTAMP NOT NULL, | |
| 		  sql0 varchar(250) NOT NULL, | |
| 		  sql1 varchar(4000) NOT NULL, | |
| 		  params varchar(3000) NOT NULL, | |
| 		  tracer varchar(500) NOT NULL, | |
| 		  timer decimal(16,6) NOT NULL | |
| 		)"; | |
| 		 | |
| 	var $settings = array( | |
| 	'Ratios', | |
| 		'data cache hit ratio' => array('RATIO', | |
| 			"SELECT  | |
| 				case when sum(POOL_DATA_L_READS+POOL_INDEX_L_READS)=0 then 0  | |
| 				else 100*(1-sum(POOL_DATA_P_READS+POOL_INDEX_P_READS)/sum(POOL_DATA_L_READS+POOL_INDEX_L_READS)) end  | |
| 				FROM TABLE(SNAPSHOT_APPL('',-2)) as t", | |
| 			'=WarnCacheRatio'), | |
| 			 | |
| 	'Data Cache', | |
| 		'data cache buffers' => array('DATAC', | |
| 		'select sum(npages) from SYSCAT.BUFFERPOOLS', | |
| 			'See <a href=http://www7b.boulder.ibm.com/dmdd/library/techarticle/anshum/0107anshum.html#bufferpoolsize>tuning reference</a>.' ), | |
| 		'cache blocksize' => array('DATAC', | |
| 		'select avg(pagesize) from SYSCAT.BUFFERPOOLS', | |
| 			'' ), | |
| 		'data cache size' => array('DATAC', | |
| 		'select sum(npages*pagesize) from SYSCAT.BUFFERPOOLS', | |
| 			'' ), | |
| 	'Connections', | |
| 		'current connections' => array('SESS', | |
| 			"SELECT count(*) FROM TABLE(SNAPSHOT_APPL_INFO('',-2)) as t", | |
| 			''), | |
| 
 | |
| 		false | |
| 	); | |
| 
 | |
| 
 | |
| 	function perf_db2(&$conn) | |
| 	{ | |
| 		$this->conn =& $conn; | |
| 	} | |
| 	 | |
| 	function Explain($sql,$partial=false) | |
| 	{ | |
| 		$save = $this->conn->LogSQL(false); | |
| 		if ($partial) { | |
| 			$sqlq = $this->conn->qstr($sql.'%'); | |
| 			$arr = $this->conn->GetArray("select distinct sql1 from adodb_logsql where sql1 like $sqlq"); | |
| 			if ($arr) { | |
| 				foreach($arr as $row) { | |
| 					$sql = reset($row); | |
| 					if (crc32($sql) == $partial) break; | |
| 				} | |
| 			} | |
| 		} | |
| 		$qno = rand(); | |
| 		$ok = $this->conn->Execute("EXPLAIN PLAN SET QUERYNO=$qno FOR $sql"); | |
| 		ob_start(); | |
| 		if (!$ok) echo "<p>Have EXPLAIN tables been created?</p>"; | |
| 		else { | |
| 			$rs = $this->conn->Execute("select * from explain_statement where queryno=$qno"); | |
| 			if ($rs) rs2html($rs); | |
| 		} | |
| 		$s = ob_get_contents(); | |
| 		ob_end_clean(); | |
| 		$this->conn->LogSQL($save); | |
| 		 | |
| 		$s .= $this->Tracer($sql); | |
| 		return $s; | |
| 	} | |
| 	 | |
| 	 | |
| 	function Tables() | |
| 	{ | |
| 		$rs = $this->conn->Execute("select tabschema,tabname,card as rows, | |
| 			npages pages_used,fpages pages_allocated, tbspace tablespace   | |
| 			from syscat.tables where tabschema not in ('SYSCAT','SYSIBM','SYSSTAT') order by 1,2"); | |
| 		return rs2html($rs,false,false,false,false); | |
| 	} | |
| } | |
| ?>
 |