【问题标题】:How to get the totale size of all databases如何获取所有数据库的总大小
【发布时间】:2018-09-15 13:01:26
【问题描述】:

您好,我正在尝试以 GB 为单位获取所有数据库的总大小

我从这个命令开始,它的每一个都运行良好,但我无法获得所有数据库的总和!

知道如何在 final 上获取所有数据库的总大小。

这是我的命令

mysql> SELECT table_schema AS "Database name", SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 /1024 ), 2)) AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema;

【问题讨论】:

    标签: mysql group-by rollup


    【解决方案1】:

    您可以使用GROUP BY ... WITH ROLLUP 选项。

    mysql> SELECT table_schema AS "Database name", 
      SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 /1024 ), 2)) AS "Size (GB)" 
      FROM information_schema.TABLES 
      GROUP BY table_schema WITH ROLLUP;
    

    在这里阅读:https://dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html

    【讨论】:

      【解决方案2】:

      我正在使用这个查询:

      $db->executeSQL("SELECT table_schema, SUM((data_length+index_length)) AS BytesUsed FROM information_schema.tables WHERE table_schema='$DBName'");
      $db_size = $db->arrayedResult[0]['BytesUsed'];
      echo "calculating DB: $DBName - size: " . $db_size . "\n";
      

      用于展示:

      /**
       * format size to Kb, Mb, Gb format
       *
       * @param $size
       * @return string
       */
      public static function formatSize($size)
      {
          $units = explode(' ', 'B KB MB GB TB PB');
          $mod = 1024;
          for ($i = 0; $size >= $mod; $i++)
          {
              $size /= $mod;
          }
          $endIndex = strpos($size, ".") + 3;
      
          $ret = substr($size, 0, $endIndex) . ' ' . $units[$i];
          return $ret;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-15
        • 2016-06-16
        • 2012-05-20
        • 1970-01-01
        • 2010-12-16
        • 2011-09-24
        • 2019-11-14
        相关资源
        最近更新 更多