我的服务器上有很多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#中。
请善待,我是新来的。如果你能指出我正确的方向,我会非常感激。
答案 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