2013-03-30 28 views
11

Chỉ cần kết thúc với việc tính toán kích thước của bảng MySQL trong GB với truy vấn sau.cách lấy kích thước hàng mysql trong GB

SELECT (data_length + index_length)/điện (1024,3) tablesize_gb TỪ information_schema.tables ĐÂU table_schema = 'db' và table_name = 'tablename'

Có thể để có được kích thước của một hàng MySQL trong GB.

Hoặc cách nhận kích thước hàng trung bình cho bảng trong GB.

+0

mà trông giống như một cách hợp lý để làm điều đó. – nneonneo

+0

@nneonneo Từ truy vấn trên, tôi nhận được kích thước của bảng, nhưng tôi cần phải có kích thước hàng. – Parthi04

+0

Chia cho số hàng? – nneonneo

Trả lời

11

Để có độ dài hàng trung bình (bao gồm cả chi phí), hãy sử dụng cột AVG_ROW_LENGTH trong information_schema.tables.

Theo như tôi biết, không có cách nào để tính toán kích thước thực tế chính xác của một hàng cụ thể trong MySQL.

-3

Để tìm kích thước bảng chúng ta có thể sử dụng một cái gì đó như thế này ..

SELECT count(*) tables, 
     concat(round(sum(table_rows)/1000000,2),'M') rows, 
     concat(round(sum(data_length)/(1024*1024*1024),2),'G') data, 
     concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx, 
     concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size, 
     round(sum(index_length)/sum(data_length),2) idxfrac 
     FROM information_schema.TABLES 
     WHERE table_name like "%table-name%" 

Tìm bảng lớn nhất trong cơ sở dữ liệu MYSQL chúng ta có thể sử dụng một cái gì đó như thế này

SELECT CONCAT(table_schema, '.', table_name), 
     CONCAT(ROUND(table_rows/1000000, 2), 'M')         rows, 
     CONCAT(ROUND(data_length/(1024 * 1024 * 1024), 2), 'G')     DATA, 
     CONCAT(ROUND(index_length/(1024 * 1024 * 1024), 2), 'G')     idx, 
     CONCAT(ROUND((data_length + index_length)/(1024 * 1024 * 1024), 2), 'G') total_size, 
     ROUND(index_length/data_length, 2)           idxfrac 
FROM information_schema.TABLES 
ORDER BY data_length + index_length DESC 
LIMIT 10 
+2

Câu hỏi cụ thể là tìm kích thước hàng lớn nhất, không phải bảng lớn nhất. – coderintherye

5

Hi điều này có thể làm các trick, chúng tôi đã có một vấn đề tương tự và phải tìm ra loại hàng nào chiếm nhiều không gian nhất. Đó là lý do tại sao ở đây với một nhóm bằng ...

SELECT groupval, (sum(length(somefield) + length(someotherfield))/1024)/1024 as "fields_size_mb" 
FROM table 
GROUP BY groupval 
ORDER BY fields_size_mb desc; 
-1
SELECT 
    table_name AS `Table`, 
    round(((data_length + index_length)/1024/1024), 2) as `Size in MB`, 
    round((AVG_ROW_LENGTH/1024), 2) as `Avg row size in KB` 
FROM information_schema.TABLES WHERE table_schema = 'your_db_name' 
ORDER BY `Size in MB` DESC 
Các vấn đề liên quan