我试图让所有MySQL数据库大于1.5GB,我无法提出一个查询,将ROUND((SUM(data_length + index_length) / 1024 / 1024),2)
返回的值与1.50进行比较。
任何建议或意见将不胜感激。
感谢。
答案 0 :(得分:1)
您正在使用的查询将为您提供MB的数量,而不是GB。因此,您可以将目标从GB转换为MB 或修改您的查询,以便为您提供GB而不是MB。
无论哪种方式,假设您已经在做类似以下的事情......
SELECT TABLE_SCHEMA, SUM(DATA_LENGTH + INDEX_LENGTH)/1024/1024 AS db_size_mb
FROM TABLES
GROUP BY TABLE_SCHEMA
您只需在最后添加HAVING db_size_mb > xxxx
即可。 xxxx的值显然取决于您是否将查询保留为返回MB。
答案 1 :(得分:1)
这也可行
SELECT table_schema AS databaseName,
sum(data_length + index_length)/1024/1024/1024 AS sizeInGB
FROM information_schema.TABLES
GROUP BY table_schema
HAVING sizeInGB >= 1.5;
答案 2 :(得分:0)
这应该有效。请注意,我使用的是bithift运算符,但只移位29位然后再跳2,这样精度就会丢失:
SELECT
TABLE_SCHEMA AS db_name,
SUM((data_length + index_length) >> 29)/2 AS db_size_gb
FROM TABLES
GROUP BY (TABLE_SCHEMA)
HAVING db_size_gb >= 1.5