[ Index ]
 

Code source de phpMyAdmin 2.10.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/libraries/engines/ -> innodb.lib.php (source)

   1  <?php
   2  /* $Id: innodb.lib.php 8107 2005-12-07 11:24:38Z cybot_tm $ */
   3  // vim: expandtab sw=4 ts=4 sts=4:
   4  
   5  class PMA_StorageEngine_innodb extends PMA_StorageEngine
   6  {
   7      /**
   8       * @uses    $GLOBALS['strInnoDBDataHomeDir']
   9       * @uses    $GLOBALS['strInnoDBDataHomeDirDesc']
  10       * @uses    $GLOBALS['strInnoDBDataFilePath']
  11       * @uses    $GLOBALS['strInnoDBAutoextendIncrement']
  12       * @uses    $GLOBALS['strInnoDBAutoextendIncrementDesc']
  13       * @uses    $GLOBALS['strInnoDBBufferPoolSize']
  14       * @uses    $GLOBALS['strInnoDBBufferPoolSizeDesc']
  15       * @uses    PMA_ENGINE_DETAILS_TYPE_NUMERIC
  16       * @uses    PMA_ENGINE_DETAILS_TYPE_SIZE
  17       * @return  array
  18       */
  19      function getVariables()
  20      {
  21          return array(
  22              'innodb_data_home_dir' => array(
  23                  'title' => $GLOBALS['strInnoDBDataHomeDir'],
  24                  'desc'  => $GLOBALS['strInnoDBDataHomeDirDesc'],
  25              ),
  26              'innodb_data_file_path' => array(
  27                  'title' => $GLOBALS['strInnoDBDataFilePath'],
  28              ),
  29              'innodb_autoextend_increment' => array(
  30                  'title' => $GLOBALS['strInnoDBAutoextendIncrement'],
  31                  'desc'  => $GLOBALS['strInnoDBAutoextendIncrementDesc'],
  32                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  33              ),
  34              'innodb_buffer_pool_size' => array(
  35                  'title' => $GLOBALS['strInnoDBBufferPoolSize'],
  36                  'desc'  => $GLOBALS['strInnoDBBufferPoolSizeDesc'],
  37                  'type'  => PMA_ENGINE_DETAILS_TYPE_SIZE,
  38              ),
  39              'innodb_additional_mem_pool_size' => array(
  40                  'title' => 'innodb_additional_mem_pool_size',
  41                  'type'  => PMA_ENGINE_DETAILS_TYPE_SIZE,
  42              ),
  43              'innodb_buffer_pool_awe_mem_mb' => array(
  44                  'type'  => PMA_ENGINE_DETAILS_TYPE_SIZE,
  45              ),
  46              'innodb_checksums' => array(
  47              ),
  48              'innodb_commit_concurrency' => array(
  49              ),
  50              'innodb_concurrency_tickets' => array(
  51                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  52              ),
  53              'innodb_doublewrite' => array(
  54              ),
  55              'innodb_fast_shutdown' => array(
  56              ),
  57              'innodb_file_io_threads' => array(
  58                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  59              ),
  60              'innodb_file_per_table' => array(
  61              ),
  62              'innodb_flush_log_at_trx_commit' => array(
  63              ),
  64              'innodb_flush_method' => array(
  65              ),
  66              'innodb_force_recovery' => array(
  67              ),
  68              'innodb_lock_wait_timeout' => array(
  69                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  70              ),
  71              'innodb_locks_unsafe_for_binlog' => array(
  72              ),
  73              'innodb_log_arch_dir' => array(
  74              ),
  75              'innodb_log_archive' => array(
  76              ),
  77              'innodb_log_buffer_size' => array(
  78                  'type'  => PMA_ENGINE_DETAILS_TYPE_SIZE,
  79              ),
  80              'innodb_log_file_size' => array(
  81                  'type'  => PMA_ENGINE_DETAILS_TYPE_SIZE,
  82              ),
  83              'innodb_log_files_in_group' => array(
  84                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  85              ),
  86              'innodb_log_group_home_dir' => array(
  87              ),
  88              'innodb_max_dirty_pages_pct' => array(
  89                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  90              ),
  91              'innodb_max_purge_lag' => array(
  92              ),
  93              'innodb_mirrored_log_groups' => array(
  94                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  95              ),
  96              'innodb_open_files' => array(
  97                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
  98              ),
  99              'innodb_support_xa' => array(
 100              ),
 101              'innodb_sync_spin_loops' => array(
 102                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
 103              ),
 104              'innodb_table_locks' => array(
 105                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
 106              ),
 107              'innodb_thread_concurrency' => array(
 108                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
 109              ),
 110              'innodb_thread_sleep_delay' => array(
 111                  'type'  => PMA_ENGINE_DETAILS_TYPE_NUMERIC,
 112              ),
 113           );
 114      }
 115  
 116      /**
 117       * @return  string  SQL query LIKE pattern
 118       */
 119      function getVariablesLikePattern()
 120      {
 121          return 'innodb\\_%';
 122      }
 123  
 124      /**
 125       * @uses    $this->support
 126       * @uses    PMA_ENGINE_SUPPORT_YES
 127       * @uses    PMA_MYSQL_INT_VERSION
 128       * @uses    $GLOBALS['strBufferPool']
 129       * @uses    $GLOBALS['strInnodbStat']
 130       * @return  array   detail pages
 131       */
 132      function getInfoPages()
 133      {
 134          if ($this->support < PMA_ENGINE_SUPPORT_YES) {
 135              return array();
 136          }
 137          $pages = array();
 138          if (PMA_MYSQL_INT_VERSION >= 50002) {
 139              $pages['Bufferpool'] = $GLOBALS['strBufferPool'];
 140          }
 141          $pages['Status'] = $GLOBALS['strInnodbStat'];
 142          return $pages;
 143      }
 144  
 145      /**
 146       * returns html tables with stats over inno db buffer pool
 147       *
 148       * @uses    PMA_MYSQL_INT_VERSION
 149       * @uses    PMA_DBI_fetch_result()
 150       * @uses    PMA_formatNumber()
 151       * @uses    PMA_formatByteDown()
 152       * @uses    $GLOBALS['number_decimal_separator']
 153       * @uses    $GLOBALS['number_thousands_separator']
 154       * @uses    $GLOBALS['strBufferPoolUsage']
 155       * @uses    $GLOBALS['strTotalUC']
 156       * @uses    $GLOBALS['strInnoDBPages']
 157       * @uses    $GLOBALS['strFreePages']
 158       * @uses    $GLOBALS['strDirtyPages']
 159       * @uses    $GLOBALS['strDataPages']
 160       * @uses    $GLOBALS['strPagesToBeFlushed']
 161       * @uses    $GLOBALS['strBusyPages']
 162       * @uses    $GLOBALS['strLatchedPages']
 163       * @uses    $GLOBALS['strBufferPoolActivity']
 164       * @uses    $GLOBALS['strReadRequests']
 165       * @uses    $GLOBALS['strWriteRequests']
 166       * @uses    $GLOBALS['strBufferReadMisses']
 167       * @uses    $GLOBALS['strBufferWriteWaits']
 168       * @uses    $GLOBALS['strBufferReadMissesInPercent']
 169       * @uses    $GLOBALS['strBufferWriteWaitsInPercent']
 170       * @uses    join()
 171       * @uses    htmlspecialchars()
 172       * @uses    number_format()
 173       * @return  string  html table with stats
 174       */
 175      function getPageBufferpool()
 176      {
 177          if (PMA_MYSQL_INT_VERSION < 50002) {
 178              return false;
 179          }
 180          // rabus: The following query is only possible because we know
 181          // that we are on MySQL 5 here (checked above)!
 182          // side note: I love MySQL 5 for this. :-)
 183          $sql = '
 184               SHOW STATUS
 185              WHERE Variable_name LIKE \'Innodb\\_buffer\\_pool\\_%\'
 186                 OR Variable_name = \'Innodb_page_size\';';
 187          $status = PMA_DBI_fetch_result( $sql, 0, 1 );
 188  
 189          $output = '<table class="data" id="table_innodb_bufferpool_usage">' . "\n"
 190                  . '    <caption class="tblHeaders">' . "\n"
 191                  . '        ' . $GLOBALS['strBufferPoolUsage'] . "\n"
 192                  . '    </caption>' . "\n"
 193                  . '    <tfoot>' . "\n"
 194                  . '        <tr>' . "\n"
 195                  . '            <th colspan="2">' . "\n"
 196                  . '                ' . $GLOBALS['strTotalUC'] . "\n"
 197                  . '                : ' . PMA_formatNumber(
 198                          $status['Innodb_buffer_pool_pages_total'], 0)
 199                  . '&nbsp;' . $GLOBALS['strInnoDBPages']
 200                  . ' / '
 201                  . join('&nbsp;',
 202                      PMA_formatByteDown($status['Innodb_buffer_pool_pages_total'] * $status['Innodb_page_size'])) . "\n"
 203                  . '            </th>' . "\n"
 204                  . '        </tr>' . "\n"
 205                  . '    </tfoot>' . "\n"
 206                  . '    <tbody>' . "\n"
 207                  . '        <tr class="odd">' . "\n"
 208                  . '            <th>' . $GLOBALS['strFreePages'] . '</th>' . "\n"
 209                  . '            <td class="value">'
 210                  . PMA_formatNumber($status['Innodb_buffer_pool_pages_free'], 0)
 211                  . '</td>' . "\n"
 212                  . '        </tr>' . "\n"
 213                  . '        <tr class="even">' . "\n"
 214                  . '            <th>' . $GLOBALS['strDirtyPages'] . '</th>' . "\n"
 215                  . '            <td class="value">'
 216                  . PMA_formatNumber($status['Innodb_buffer_pool_pages_dirty'], 0)
 217                  . '</td>' . "\n"
 218                  . '        </tr>' . "\n"
 219                  . '        <tr class="odd">' . "\n"
 220                  . '            <th>' . $GLOBALS['strDataPages'] . '</th>' . "\n"
 221                  . '            <td class="value">'
 222                  . PMA_formatNumber($status['Innodb_buffer_pool_pages_data'], 0) . "\n"
 223                  . '</td>' . "\n"
 224                  . '        </tr>' . "\n"
 225                  . '        <tr class="even">' . "\n"
 226                  . '            <th>' . $GLOBALS['strPagesToBeFlushed'] . '</th>' . "\n"
 227                  . '            <td class="value">'
 228                  . PMA_formatNumber($status['Innodb_buffer_pool_pages_flushed'], 0) . "\n"
 229                  . '</td>' . "\n"
 230                  . '        </tr>' . "\n"
 231                  . '        <tr class="odd">' . "\n"
 232                  . '            <th>' . $GLOBALS['strBusyPages'] . '</th>' . "\n"
 233                  . '            <td class="value">'
 234                  . PMA_formatNumber($status['Innodb_buffer_pool_pages_misc'], 0) . "\n"
 235                  . '</td>' . "\n"
 236                  . '        </tr>' . "\n"
 237                  . '        <tr class="even">' . "\n"
 238                  . '            <th>' . $GLOBALS['strLatchedPages'] . '</th>' . "\n"
 239                  . '            <td class="value">'
 240                  . PMA_formatNumber($status['Innodb_buffer_pool_pages_latched'], 0) . "\n"
 241                  . '</td>' . "\n"
 242                  . '        </tr>' . "\n"
 243                  . '    </tbody>' . "\n"
 244                  . '</table>' . "\n\n"
 245                  . '<table class="data" id="table_innodb_bufferpool_activity">' . "\n"
 246                  . '    <caption class="tblHeaders">' . "\n"
 247                  . '        ' . $GLOBALS['strBufferPoolActivity'] . "\n"
 248                  . '    </caption>' . "\n"
 249                  . '    <tbody>' . "\n"
 250                  . '        <tr class="odd">' . "\n"
 251                  . '            <th>' . $GLOBALS['strReadRequests'] . '</th>' . "\n"
 252                  . '            <td class="value">'
 253                  . PMA_formatNumber($status['Innodb_buffer_pool_read_requests'], 0) . "\n"
 254                  . '</td>' . "\n"
 255                  . '        </tr>' . "\n"
 256                  . '        <tr class="even">' . "\n"
 257                  . '            <th>' . $GLOBALS['strWriteRequests'] . '</th>' . "\n"
 258                  . '            <td class="value">'
 259                  . PMA_formatNumber($status['Innodb_buffer_pool_write_requests'], 0) . "\n"
 260                  . '</td>' . "\n"
 261                  . '        </tr>' . "\n"
 262                  . '        <tr class="odd">' . "\n"
 263                  . '            <th>' . $GLOBALS['strBufferReadMisses'] . '</th>' . "\n"
 264                  . '            <td class="value">'
 265                  . PMA_formatNumber($status['Innodb_buffer_pool_reads'], 0) . "\n"
 266                  . '</td>' . "\n"
 267                  . '        </tr>' . "\n"
 268                  . '        <tr class="even">' . "\n"
 269                  . '            <th>' . $GLOBALS['strBufferWriteWaits'] . '</th>' . "\n"
 270                  . '            <td class="value">'
 271                  . PMA_formatNumber($status['Innodb_buffer_pool_wait_free'], 0) . "\n"
 272                  . '</td>' . "\n"
 273                  . '        </tr>' . "\n"
 274                  . '        <tr class="odd">' . "\n"
 275                  . '            <th>' . $GLOBALS['strBufferReadMissesInPercent'] . '</th>' . "\n"
 276                  . '            <td class="value">'
 277                  . ($status['Innodb_buffer_pool_read_requests'] == 0
 278                      ? '---'
 279                      : htmlspecialchars(number_format($status['Innodb_buffer_pool_reads'] * 100 / $status['Innodb_buffer_pool_read_requests'], 2, $GLOBALS['number_decimal_separator'], $GLOBALS['number_thousands_separator'])) . ' %') . "\n"
 280                  . '</td>' . "\n"
 281                  . '        </tr>' . "\n"
 282                  . '        <tr class="even">' . "\n"
 283                  . '            <th>' . $GLOBALS['strBufferWriteWaitsInPercent'] . '</th>' . "\n"
 284                  . '            <td class="value">'
 285                  . ($status['Innodb_buffer_pool_write_requests'] == 0
 286                      ? '---'
 287                      : htmlspecialchars(number_format($status['Innodb_buffer_pool_wait_free'] * 100 / $status['Innodb_buffer_pool_write_requests'], 2, $GLOBALS['number_decimal_separator'], $GLOBALS['number_thousands_separator'])) . ' %') . "\n"
 288                  . '</td>' . "\n"
 289                  . '        </tr>' . "\n"
 290                  . '    </tbody>' . "\n"
 291                  . '</table>' . "\n";
 292          return $output;
 293      }
 294  
 295      /**
 296       * returns InnoDB status
 297       *
 298       * @uses    htmlspecialchars()
 299       * @uses    PMA_DBI_fetch_value()
 300       * @return  string  result of SHOW INNODB STATUS inside pre tags
 301       */
 302      function getPageStatus()
 303      {
 304          return '<pre id="pre_innodb_status">' . "\n"
 305              . htmlspecialchars(PMA_DBI_fetch_value('SHOW INNODB STATUS;')) . "\n"
 306              . '</pre>' . "\n";
 307      }
 308  
 309      /**
 310       * returns content for page $id
 311       *
 312       * @uses    $this->getInfoPages()
 313       * @uses    array_key_exists()
 314       * @param   string  $id page id
 315       * @return  string  html output
 316       */
 317      function getPage($id)
 318      {
 319          if ( ! array_key_exists( $id, $this->getInfoPages() ) ) {
 320              return false;
 321          }
 322  
 323          $id = 'getPage' . $id;
 324  
 325          return $this->$id();
 326      }
 327  
 328      /**
 329       * returns string with filename for the MySQL helppage
 330       * about this storage engne
 331       *
 332       * @return  string  mysql helppage filename
 333       */
 334      function getMysqlHelpPage()
 335      {
 336          return 'innodb';
 337      }
 338  }
 339  
 340  ?>


Généré le : Mon Nov 26 15:18:20 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics