亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? perf-mysql.inc.php

?? 這是一個嵌入式linux系統(tǒng)下的命令工具包
?? PHP
字號:
<?php
/* 
V4.80 8 Mar 2006  (c) 2000-2006 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();

class perf_mysql extends adodb_perf{
	
	var $tablesSQL = 'show table status';
	
	var $createTableSQL = "CREATE TABLE adodb_logsql (
		  created datetime NOT NULL,
		  sql0 varchar(250) NOT NULL,
		  sql1 text NOT NULL,
		  params text NOT NULL,
		  tracer text NOT NULL,
		  timer decimal(16,6) NOT NULL
		)";
		
	var $settings = array(
	'Ratios',
		'MyISAM cache hit ratio' => array('RATIO',
			'=GetKeyHitRatio',
			'=WarnCacheRatio'),
		'InnoDB cache hit ratio' => array('RATIO',
			'=GetInnoDBHitRatio',
			'=WarnCacheRatio'),
		'data cache hit ratio' => array('HIDE', # only if called
			'=FindDBHitRatio',
			'=WarnCacheRatio'),
		'sql cache hit ratio' => array('RATIO',
			'=GetQHitRatio',
			''),
	'IO',
		'data reads' => array('IO',
			'=GetReads',
			'Number of selects (Key_reads is not accurate)'),
		'data writes' => array('IO',
			'=GetWrites',
			'Number of inserts/updates/deletes * coef (Key_writes is not accurate)'),
		
	'Data Cache',
		'MyISAM data cache size' => array('DATAC',
			array("show variables", 'key_buffer_size'),
			'' ),
		'BDB data cache size' => array('DATAC',
			array("show variables", 'bdb_cache_size'),
			'' ),
		'InnoDB data cache size' => array('DATAC',
			array("show variables", 'innodb_buffer_pool_size'),
			'' ),
	'Memory Usage',
		'read buffer size' => array('CACHE',
			array("show variables", 'read_buffer_size'),
			'(per session)'),
		'sort buffer size' => array('CACHE',
			array("show variables", 'sort_buffer_size'),
			'Size of sort buffer (per session)' ),
		'table cache' => array('CACHE',
			array("show variables", 'table_cache'),
			'Number of tables to keep open'),
	'Connections',	
		'current connections' => array('SESS',
			array('show status','Threads_connected'),
			''),
		'max connections' => array( 'SESS',
			array("show variables",'max_connections'),
			''),
	
		false
	);
	
	function perf_mysql(&$conn)
	{
		$this->conn =& $conn;
	}
	
	function Explain($sql,$partial=false)
	{
		
		if (strtoupper(substr(trim($sql),0,6)) !== 'SELECT') return '<p>Unable to EXPLAIN non-select statement</p>';
		$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;
				}
			}
		}
		$sql = str_replace('?',"''",$sql);
		
		if ($partial) {
			$sqlq = $this->conn->qstr($sql.'%');
			$sql = $this->conn->GetOne("select sql1 from adodb_logsql where sql1 like $sqlq");
		}
		
		$s = '<p><b>Explain</b>: '.htmlspecialchars($sql).'</p>';
		$rs = $this->conn->Execute('EXPLAIN '.$sql);
		$s .= rs2html($rs,false,false,false,false);
		$this->conn->LogSQL($save);
		$s .= $this->Tracer($sql);
		return $s;
	}
	
	function Tables()
	{
		if (!$this->tablesSQL) return false;
		
		$rs = $this->conn->Execute($this->tablesSQL);
		if (!$rs) return false;
		
		$html = rs2html($rs,false,false,false,false);
		return $html;
	}
	
	function GetReads()
	{
	global $ADODB_FETCH_MODE;
		$save = $ADODB_FETCH_MODE;
		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
		if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false);
		
		$rs = $this->conn->Execute('show status');
		
		if (isset($savem)) $this->conn->SetFetchMode($savem);
		$ADODB_FETCH_MODE = $save;
		
		if (!$rs) return 0;
		$val = 0;
		while (!$rs->EOF) {
			switch($rs->fields[0]) {
			case 'Com_select': 
				$val = $rs->fields[1];
				$rs->Close();
				return $val;
			}
			$rs->MoveNext();
		} 
		
		$rs->Close();
		
		return $val;
	}
	
	function GetWrites()
	{
	global $ADODB_FETCH_MODE;
		$save = $ADODB_FETCH_MODE;
		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
		if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false);
		
		$rs = $this->conn->Execute('show status');
		
		if (isset($savem)) $this->conn->SetFetchMode($savem);
		$ADODB_FETCH_MODE = $save;
		
		if (!$rs) return 0;
		$val = 0.0;
		while (!$rs->EOF) {
			switch($rs->fields[0]) {
			case 'Com_insert': 
				$val += $rs->fields[1]; break;
			case 'Com_delete': 
				$val += $rs->fields[1]; break;
			case 'Com_update': 
				$val += $rs->fields[1]/2;
				$rs->Close();
				return $val;
			}
			$rs->MoveNext();
		} 
		
		$rs->Close();
		
		return $val;
	}
	
	function FindDBHitRatio()
	{
		// first find out type of table
		//$this->conn->debug=1;
		
		global $ADODB_FETCH_MODE;
		$save = $ADODB_FETCH_MODE;
		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
		if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false);
		
		$rs = $this->conn->Execute('show table status');
		
		if (isset($savem)) $this->conn->SetFetchMode($savem);
		$ADODB_FETCH_MODE = $save;
		
		if (!$rs) return '';
		$type = strtoupper($rs->fields[1]);
		$rs->Close();
		switch($type){
		case 'MYISAM':
		case 'ISAM':
			return $this->DBParameter('MyISAM cache hit ratio').' (MyISAM)';
		case 'INNODB':
			return $this->DBParameter('InnoDB cache hit ratio').' (InnoDB)';
		default:
			return $type.' not supported';
		}
		
	}
	
	function GetQHitRatio()
	{
		//Total number of queries = Qcache_inserts + Qcache_hits + Qcache_not_cached
		$hits = $this->_DBParameter(array("show status","Qcache_hits"));
		$total = $this->_DBParameter(array("show status","Qcache_inserts"));
		$total += $this->_DBParameter(array("show status","Qcache_not_cached"));
		
		$total += $hits;
		if ($total) return round(($hits*100)/$total,2);
		return 0;
	}
	
	/*
		Use session variable to store Hit percentage, because MySQL
		does not remember last value of SHOW INNODB STATUS hit ratio
		
		# 1st query to SHOW INNODB STATUS
		0.00 reads/s, 0.00 creates/s, 0.00 writes/s
		Buffer pool hit rate 1000 / 1000
		
		# 2nd query to SHOW INNODB STATUS
		0.00 reads/s, 0.00 creates/s, 0.00 writes/s
		No buffer pool activity since the last printout
	*/
	function GetInnoDBHitRatio()
	{
	global $ADODB_FETCH_MODE;
	
		$save = $ADODB_FETCH_MODE;
		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
		if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false);
		
		$rs = $this->conn->Execute('show innodb status');
		
		if (isset($savem)) $this->conn->SetFetchMode($savem);
		$ADODB_FETCH_MODE = $save;
		
		if (!$rs || $rs->EOF) return 0;
		$stat = $rs->fields[0];
		$rs->Close();
		$at = strpos($stat,'Buffer pool hit rate');
		$stat = substr($stat,$at,200);
		if (preg_match('!Buffer pool hit rate\s*([0-9]*) / ([0-9]*)!',$stat,$arr)) {
			$val = 100*$arr[1]/$arr[2];
			$_SESSION['INNODB_HIT_PCT'] = $val;
			return round($val,2);
		} else {
			if (isset($_SESSION['INNODB_HIT_PCT'])) return $_SESSION['INNODB_HIT_PCT'];
			return 0;
		}
		return 0;
	}
	
	function GetKeyHitRatio()
	{
		$hits = $this->_DBParameter(array("show status","Key_read_requests"));
		$reqs = $this->_DBParameter(array("show status","Key_reads"));
		if ($reqs == 0) return 0;
		
		return round(($hits/($reqs+$hits))*100,2);
	}
	
    // start hack 
    var $optimizeTableLow = 'CHECK TABLE %s FAST QUICK';
    var $optimizeTableHigh = 'OPTIMIZE TABLE %s';
    
    /** 
     * @see adodb_perf#optimizeTable
     */
     function optimizeTable( $table, $mode = ADODB_OPT_LOW) 
     {
        if ( !is_string( $table)) return false;
        
        $conn = $this->conn;
        if ( !$conn) return false;
        
        $sql = '';
        switch( $mode) {
            case ADODB_OPT_LOW : $sql = $this->optimizeTableLow; break;
            case ADODB_OPT_HIGH : $sql = $this->optimizeTableHigh; break;
            default : 
            {
                // May dont use __FUNCTION__ constant for BC (__FUNCTION__ Added in PHP 4.3.0)
                ADOConnection::outp( sprintf( "<p>%s: '%s' using of undefined mode '%s'</p>", __CLASS__, __FUNCTION__, $mode));
                return false;
            }
        }
        $sql = sprintf( $sql, $table);
        
        return $conn->Execute( $sql) !== false;
     }
    // end hack 
}
?>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品成人久久综合一区| 亚洲精品视频一区| 在线一区二区三区四区五区| 老司机一区二区| 亚洲黄色小说网站| 国产农村妇女精品| 精品久久一区二区三区| 在线欧美日韩精品| 成人av电影在线播放| 久久精品av麻豆的观看方式| 亚洲午夜三级在线| 国产精品初高中害羞小美女文| 精品国产91乱码一区二区三区 | 久久99久久99| 水蜜桃久久夜色精品一区的特点| 亚洲色图清纯唯美| 亚洲欧洲成人自拍| 国产精品色哟哟| 久久久www成人免费无遮挡大片| 欧美一级艳片视频免费观看| 91久久国产最好的精华液| 成人免费高清视频| 成人免费看黄yyy456| 国产成人av福利| 国产二区国产一区在线观看| 国产资源精品在线观看| 国内外成人在线视频| 久久精品国产第一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 亚洲国产一区二区视频| 亚洲图片欧美视频| 亚洲午夜羞羞片| 午夜精品久久久久久久蜜桃app| 亚洲自拍与偷拍| 亚洲国产精品影院| 亚洲国产一二三| 丝袜亚洲另类丝袜在线| 日韩精品一级中文字幕精品视频免费观看| 亚洲国产综合视频在线观看| 午夜精品福利一区二区三区av| 日韩成人一级大片| 美女任你摸久久| 国产在线精品不卡| 床上的激情91.| 99精品久久久久久| 在线亚洲欧美专区二区| 欧美日韩一区二区在线观看| 欧美丰满美乳xxx高潮www| 欧美日韩日日摸| 日韩久久精品一区| 久久精品99国产精品| 亚洲综合男人的天堂| 午夜国产精品影院在线观看| 日本不卡的三区四区五区| 久久精品国产免费看久久精品| 国产麻豆精品theporn| 成人午夜大片免费观看| 91福利视频久久久久| 欧美日韩激情在线| 午夜电影网亚洲视频| 日韩成人午夜电影| 成人综合日日夜夜| 欧洲视频一区二区| 精品国产电影一区二区| 最好看的中文字幕久久| 亚洲成va人在线观看| 精品亚洲国内自在自线福利| 99视频精品全部免费在线| 欧美日韩亚洲另类| 精品1区2区在线观看| 亚洲女厕所小便bbb| 日本不卡的三区四区五区| 国产成人亚洲综合a∨猫咪| 欧美综合视频在线观看| 26uuu色噜噜精品一区二区| 日韩码欧中文字| 久久精品国产秦先生| 色婷婷久久综合| 欧美精品一区二区三区视频| 亚洲日本在线观看| 韩国精品在线观看| 欧美中文字幕一二三区视频| 欧美精品一区二区三区久久久| 亚洲精品国产一区二区三区四区在线 | 91精品国产手机| 国产精品天干天干在线综合| 午夜精品福利视频网站 | 日韩视频一区二区三区在线播放| 国产女主播在线一区二区| 日韩在线一二三区| 色综合久久久久网| 日韩精品一区二区三区在线观看| 亚洲男人天堂一区| 国产精品1区2区3区| 欧美日韩在线观看一区二区 | 亚洲18色成人| jlzzjlzz国产精品久久| 精品裸体舞一区二区三区| 亚洲激情在线播放| 成人一区在线看| 精品蜜桃在线看| 日韩av电影一区| 色婷婷av一区二区三区gif| 国产视频一区二区在线| 美国十次了思思久久精品导航| 91老司机福利 在线| 中文字幕免费不卡| 国产美女精品人人做人人爽| 制服.丝袜.亚洲.另类.中文| 中文字幕一区二区三中文字幕 | 欧美一卡二卡三卡四卡| 亚洲一区影音先锋| 色综合中文字幕国产| 国产亚洲福利社区一区| 久久99精品久久久久婷婷| 欧美一区二区三区男人的天堂| 亚洲一区二区三区爽爽爽爽爽 | 北条麻妃国产九九精品视频| 久久综合九色综合97婷婷| 麻豆精品一区二区综合av| 欧美一区二区三区免费观看视频 | 精品国产乱码久久久久久影片| 日本不卡高清视频| 51精品秘密在线观看| 婷婷久久综合九色国产成人| 欧美日韩国产一级片| 亚洲国产成人高清精品| 欧美日韩一区三区四区| 亚洲网友自拍偷拍| 欧美精品在线一区二区三区| 五月综合激情婷婷六月色窝| 欧美欧美欧美欧美首页| 午夜久久久影院| 日韩一区二区三区观看| 美女视频一区二区| 久久综合999| 粉嫩嫩av羞羞动漫久久久| 久久精品人人做人人综合| 丰满放荡岳乱妇91ww| 国产精品色噜噜| av网站一区二区三区| 亚洲欧美色图小说| 欧美日韩中文精品| 理论电影国产精品| 国产日韩精品视频一区| av在线不卡观看免费观看| 日韩理论片在线| 欧美日韩久久一区| 麻豆精品久久久| 国产日韩欧美精品一区| 91在线国内视频| 亚洲国产一区二区三区青草影视 | 精品91自产拍在线观看一区| 国产乱码精品一品二品| 国产精品久99| 欧美丝袜丝nylons| 久热成人在线视频| 国产精品久线在线观看| 欧美午夜精品一区二区三区| 男女性色大片免费观看一区二区| www亚洲一区| 91丨九色丨尤物| 视频在线在亚洲| 国产欧美一区二区精品忘忧草| www..com久久爱| 午夜精品一区在线观看| 久久男人中文字幕资源站| av激情亚洲男人天堂| 香蕉加勒比综合久久| 精品欧美乱码久久久久久1区2区 | 欧美日韩亚洲不卡| 国产一区二三区好的| 亚洲免费观看高清完整 | 亚洲精品精品亚洲| 欧美成人午夜电影| 91捆绑美女网站| 捆绑紧缚一区二区三区视频| 亚洲日本电影在线| 日韩精品一区二区三区视频| voyeur盗摄精品| 麻豆精品在线视频| 亚洲欧美另类图片小说| 日韩精品影音先锋| 日本高清不卡视频| 国产91在线观看| 日韩av电影天堂| 中文字幕一区二区三区精华液| 欧美福利电影网| 97se亚洲国产综合自在线观| 美女任你摸久久| 亚洲综合在线视频| 成人不卡免费av| 中文字幕一区二区5566日韩| 欧美亚洲免费在线一区| 国产成人啪午夜精品网站男同| 亚洲妇熟xx妇色黄| 国产精品久久久久毛片软件| 日韩欧美中文字幕制服| 欧美系列亚洲系列| 91影视在线播放|