如何获得以特定前缀开头的所有MySQL数据库使用的总磁盘空间?

时间:2017-01-15 16:53:53

标签: c# mysql database visual-studio

我的服务器上有很多MySQL数据库。它们设置有前缀,例如"DB1-2939128""DB2-3193831"。我正在研究一个c#项目,我正在尝试计算以其中一个前缀开头的所有数据库的总磁盘大小。例如:

58.29MB of disk space is used by all databases beginning with "DB1-"

我一直在网上搜索,但没有找到任何c#示例。我发现的最好的是以下MySQL查询:

SELECT table_schema "Database Name",
       SUM(data_length+index_length)/1024/1024 "Database Size (MB)"
FROM information_schema.TABLES
GROUP BY table_schema;

这将返回所有数据库的总大小,而不仅仅是具有特定前缀的数据库。我也不太确定如何将其实现到c#中。

请善待,我是新来的。如果你能指出我正确的方向,我会非常感激。

1 个答案:

答案 0 :(得分:1)

你非常接近。您要添加WHERE ... LIKE 'prefix%',然后在SUBSTRING()子句中使用GROUP BY

SELECT SUBSTRING(table_schema,1, LENGTH('wp')) "Database Name Prefix", 
       SUM(data_length+index_length)/1024/1024     "Database Size (MB)"
  FROM information_schema.TABLES
 WHERE table_schema LIKE CONCAT('wp', '%')
 GROUP BY SUBSTRING(table_schema,1, LENGTH('WP'))

或者,如果您希望数据库逐项列出,就是这样。

SELECT table_schema "Database Name Prefix", 
       SUM(data_length+index_length)/1024/1024     "Database Size (MB)"
  FROM information_schema.TABLES
 WHERE table_schema LIKE CONCAT(prefix', '%')
 GROUP BY table_schema WITH ROLLUP