За последние 24 часа нас посетили 19214 программистов и 1621 робот. Сейчас ищут 1058 программистов ...

Информация о бд

Тема в разделе "MySQL", создана пользователем MCTrane, 26 мар 2010.

  1. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Как узнать через php код сколько весит бд или только какая нибудь таблица и сколько фрагментировано мб?
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    [sql]SHOW TABLES FROM база[/sql]
    [sql]SHOW TABLE STATUS FROM база[/sql]
     
  3. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Спасибо, но у меня есть проблема вот мой запрос
    PHP:
    1.  
    2. <?php
    3.  
    4. $result = mysql_query("SHOW TABLE STATUS FROM  $bd LIKE '$tbl'");
    5. while($array = mysql_fetch_array($result)) {
    6. $total = $array[Data_length]+$array[Index_length];
    7. echo '
    8. Table: '.$array[Name].'<br />
    9. Data Size: '.$array[Data_length].'<br />
    10. Index Size: '.$array[Index_length].'<br />
    11. Total Size: '.$total.'<br />
    12. Average Size Per Row: '.$array[Avg_row_length].'<br /><br />
    13. ';
    14. echo $array['Data_free'];
    15.  
    16. }
    17.  
    18. ?>
    19.  
    Всё выводит кроме $array['Data_free']; никто не знает в чё проблема?
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    если таблица InnoDb, то в комметах к таблице смотри
     
  5. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    echo $array[Comment];
    Ты это имеешь ввиду? Так тоже не получается
     
  6. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Таблица у меня MyISAM
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    он не выводится вообще, или Data_free = 0?
     
  8. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    =0, хотя в пхп майадмин написано 1 КБ
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ну, так посмотри
    [sql]SELECT DATA_FREE
    FROM `information_schema`.`TABLES`
    WHERE `TABLE_SCHEMA` LIKE 'БАЗА'
    AND `TABLE_NAME` LIKE 'ТАБЛИЦА'[/sql]остальные параметры там тоже есть
     
  10. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Спасибо, работает!
    Только вопрос
    как сделать чтобы по всей базе накладные расходы выводить?
     
  11. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Сделал так, но так слишком долго грузится. Может как нибудь по другому можно?
    PHP:
    1. <?php
    2. $result = mysql_query("SHOW TABLE STATUS FROM  $bd_base");
    3. while($row = mysql_fetch_array($result))
    4. {
    5. $sql=mysql_query("SELECT DATA_FREE FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` LIKE '$bd_base' AND `TABLE_NAME` LIKE '$row[Name]'");
    6. $ressq=mysql_result($sql,0,0);
    7. $sz = $sz+$ressq;
    8. }
    9. ?>
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    в
    есть всё
     
  13. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Там нет общего размера data_free.
    А мне надо общий размер data_free в определённой бд.
    Но выше приведённый мною пример долго загружается.
    Если сделать такой запрос
    PHP:
    1.  
    2. <?php
    3. $sql=mysql_query("SELECT DATA_FREE FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` LIKE '$bd_base');
    4. while($row = mysql_fetch_array($sql))
    5.  {
    6.  $sz = $sz+$row[data_free];
    7.  }
    То не получается, что тут неправельно?
     
  14. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кроме кавычек и регистра?

    ещё сам подход к суммированию
     
  15. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    А как правильно сделать сумирование?
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  17. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    а можно код полностью?
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    эх, пора озверин пить
    PHP:
    1. <?php
    2. $db = new mysqli('localhost', 'user', 'password');
    3. $sql = 'SELECT SUM( DATA_FREE )
    4.         FROM `information_schema`.`TABLES`
    5.         WHERE `TABLE_SCHEMA` LIKE "test_db"';
    6.  
    7. list($data_free) =  $db->query($sql) -> fetch_row();
    8. echo round($data_free/1024,2).' Kib';
     
  19. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Спасибо, всё работает