mysql DB에서 전체용량 대비 각 테이블의 사용량 % 출력 0 2 1,026

by dizzyzz [MySQL] [2021.04.01 20:45:41]


 

+-----------------------+----------+
| DatabaseName        | Size(MB) |
+-----------------------+----------+
| solution                  |        5.9 |
| mysql                     |       2.4 |
| information_schema   |       0.2 |
| performance_schema |        0.0 |
+------------------------+----------+

SELECT   table_schema AS 'Database',    
    Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Db Size (MB)',
    Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Free Space (MB)'  
FROM information_schema.tables  
GROUP BY table_schema ;

<테이블별 용량 (Table Size) 조회>

+-------------------+------------+
| Tables               | Size in MB |
+-------------------+------------+
| location              |       0.20 |  -> ? %
| data                    |       0.15 | -> ? %
| company            |       0.11 | -> ? %
| money               |       0.09 | - >? %
| pay                   |       0.08 | -> ? %
+-------------------+------------+

SELECT TABLE_NAME AS "Tables",
                   round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB"
FROM information_schema.TABLES
WHERE table_schema = 'kanu'
ORDER BY (data_length + index_length) DESC
LIMIT 5;

 

각각의 사용량은 어찌어찌 구해봤는데

solution DB에서의 각 테이블의 사용량을 %로 출력하려면 어떻게 쿼리를 작성해야 할까요...

도움 부탁드리겠습니다

by 뉴비디비 [2021.04.01 21:17:51]
SELECT 
	TABLE_NAME AS "Table Name"
	, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Table Size(MB)"
	, ROUND(( (data_length+index_length) / SUM( (data_length + index_length) ) OVER() )*100, 2) AS sizePercent
	, ROUND( SUM( (data_length + index_length) ) OVER() /1024/1024 , 2) AS "TotalSize(MB)"
FROM information_schema.TABLES
WHERE table_schema = 'mysql'
ORDER BY (data_length + index_length) DESC

 


by dizzyzz [2021.04.01 22:18:52]

정말 감사합니다!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입