最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL如何查看某個(gè)表所占空間大小

 更新時(shí)間:2025年05月16日 09:06:40   作者:數(shù)據(jù)知道  
在MySQL數(shù)據(jù)庫(kù)管理和優(yōu)化中,了解表所占用的空間大小是非常重要的,本文為大家整理了多種查看MySQL表空間大小的方法,需要的可以參考一下

一、使用SQL查詢查看表空間

1.1 查詢所有表的大?。ò〝?shù)據(jù)和索引)

SELECT 
    table_schema AS '數(shù)據(jù)庫(kù)名',
    table_name AS '表名',
    ROUND(data_length/1024/1024, 2) AS '數(shù)據(jù)大小(MB)',
    ROUND(index_length/1024/1024, 2) AS '索引大小(MB)',
    ROUND((data_length + index_length)/1024/1024, 2) AS '總大小(MB)',
    table_rows AS '行數(shù)'
FROM 
    information_schema.TABLES 
WHERE 
    table_schema NOT IN ('information_schema', 'mysql', 'performance_schema')
ORDER BY 
    (data_length + index_length) DESC;
SELECT round(data_length/1024/1024, 2) AS '數(shù)據(jù)大小(MB)', round(index_length/1024/1024, 2) AS '索引大小(MB)', round((data_length + index_length)/1024/1024, 2) AS '總大小(MB)'
FROM information_schema.TABLES 
where table_name = '表名';

1.2 查詢特定數(shù)據(jù)庫(kù)的表大小

SELECT 
    table_name AS '表名',
    ROUND(data_length/1024/1024, 2) AS '數(shù)據(jù)大小(MB)',
    ROUND(index_length/1024/1024, 2) AS '索引大小(MB)',
    ROUND((data_length + index_length)/1024/1024, 2) AS '總大小(MB)',
    table_rows AS '行數(shù)'
FROM 
    information_schema.TABLES 
WHERE 
    table_schema = '你的數(shù)據(jù)庫(kù)名'
ORDER BY 
    (data_length + index_length) DESC;

1.3 查詢單個(gè)表的詳細(xì)空間信息

SELECT 
    table_name AS '表名',
    engine AS '存儲(chǔ)引擎',
    ROUND(data_length/1024/1024, 2) AS '數(shù)據(jù)大小(MB)',
    ROUND(index_length/1024/1024, 2) AS '索引大小(MB)',
    ROUND((data_length + index_length)/1024/1024, 2) AS '總大小(MB)',
    ROUND(data_free/1024/1024, 2) AS '碎片空間(MB)',
    table_rows AS '行數(shù)',
    avg_row_length AS '平均行長(zhǎng)度(字節(jié))',
    create_time AS '創(chuàng)建時(shí)間',
    update_time AS '更新時(shí)間'
FROM 
    information_schema.TABLES 
WHERE 
    table_schema = '你的數(shù)據(jù)庫(kù)名'
    AND table_name = '你的表名';

二、使用命令行工具查看表空間

2.1 使用mysql客戶端查詢

mysql -u用戶名 -p密碼 -e "SELECT table_name AS '表名', \
ROUND(data_length/1024/1024,2) AS '數(shù)據(jù)大小(MB)', \
ROUND(index_length/1024/1024,2) AS '索引大小(MB)', \
ROUND((data_length+index_length)/1024/1024,2) AS '總大小(MB)' \
FROM information_schema.TABLES \
WHERE table_schema='你的數(shù)據(jù)庫(kù)名' \
ORDER BY (data_length+index_length) DESC;"

2.2 查看物理文件大?。ㄟm用于MyISAM/InnoDB)

# 切換到MySQL數(shù)據(jù)目錄
cd /var/lib/mysql/你的數(shù)據(jù)庫(kù)名/

# 查看文件大小
ls -lh *.ibd *.frm *.MYD *.MYI

# 計(jì)算總大小
du -sh ./*

三、查看InnoDB表的空間使用詳情

3.1 查看InnoDB表空間狀態(tài)

SHOW TABLE STATUS FROM 你的數(shù)據(jù)庫(kù)名 LIKE '你的表名'\G

3.2 查看InnoDB引擎狀態(tài)(包含緩沖池等信息)

SHOW ENGINE INNODB STATUS\G

3.3 查詢InnoDB表空間文件信息

SELECT 
    FILE_NAME, 
    TABLESPACE_NAME, 
    ENGINE, 
    TOTAL_EXTENTS, 
    EXTENT_SIZE, 
    INITIAL_SIZE, 
    MAXIMUM_SIZE 
FROM 
    INFORMATION_SCHEMA.FILES 
WHERE 
    FILE_TYPE = 'DATAFILE';

四、高級(jí)空間分析工具

4.1 使用pt-diskstats(Percona工具包)

pt-diskstats --devices=/var/lib/mysql

4.2 使用pt-mysql-summary(Percona工具包)

pt-mysql-summary --user=用戶名 --password=密碼

4.3 使用mysqldumpslow分析表空間增長(zhǎng)

mysqldumpslow -s t /var/log/mysql/mysql-slow.log

五、空間優(yōu)化相關(guān)查詢

5.1 查找碎片化嚴(yán)重的表

SELECT 
    table_schema AS '數(shù)據(jù)庫(kù)',
    table_name AS '表名',
    ROUND(data_free/1024/1024, 2) AS '碎片空間(MB)',
    ROUND((data_length + index_length)/1024/1024, 2) AS '總大小(MB)',
    ROUND((data_free/(data_length + index_length + data_free))*100, 2) AS '碎片率(%)'
FROM 
    information_schema.TABLES 
WHERE 
    table_schema NOT IN ('information_schema', 'mysql', 'performance_schema')
    AND data_free > 0
ORDER BY 
    data_free DESC
LIMIT 10;

5.2 查看表空間自動(dòng)擴(kuò)展設(shè)置

SELECT 
    table_name, 
    engine, 
    row_format, 
    create_options 
FROM 
    information_schema.TABLES 
WHERE 
    table_schema = '你的數(shù)據(jù)庫(kù)名';

六、注意事項(xiàng)

權(quán)限要求:查詢information_schema需要相應(yīng)的權(quán)限

數(shù)據(jù)準(zhǔn)確性:table_rows是估算值,特別是對(duì)于InnoDB表

存儲(chǔ)引擎差異:

• InnoDB表數(shù)據(jù)存儲(chǔ)在.ibd文件中(獨(dú)立表空間)或共享表空間中

• MyISAM表數(shù)據(jù)存儲(chǔ)在.MYD文件中,索引存儲(chǔ)在.MYI文件中

臨時(shí)表空間:臨時(shí)表和使用內(nèi)存引擎的表不會(huì)顯示在磁盤使用統(tǒng)計(jì)中

二進(jìn)制日志和事務(wù)日志:這些日志文件占用空間但不包含在表空間統(tǒng)計(jì)中

七、自動(dòng)化監(jiān)控腳本示例

#!/bin/bash

# MySQL表空間監(jiān)控腳本
DB_USER="用戶名"
DB_PASS="密碼"
DB_NAME="數(shù)據(jù)庫(kù)名"
OUTPUT_FILE="/tmp/mysql_table_sizes_$(date +%Y%m%d).csv"

echo "表名,數(shù)據(jù)大小(MB),索引大小(MB),總大小(MB),行數(shù),碎片空間(MB)" > $OUTPUT_FILE

mysql -u$DB_USER -p$DB_PASS -e "SELECT \
    CONCAT(table_name, ',', \
    ROUND(data_length/1024/1024, 2), ',', \
    ROUND(index_length/1024/1024, 2), ',', \
    ROUND((data_length + index_length)/1024/1024, 2), ',', \
    table_rows, ',', \
    ROUND(data_free/1024/1024, 2)) \
FROM information_schema.TABLES \
WHERE table_schema = '$DB_NAME' \
ORDER BY (data_length + index_length) DESC;" >> $OUTPUT_FILE

???????echo "報(bào)告已生成: $OUTPUT_FILE"

通過(guò)以上方法,您可以全面了解MySQL數(shù)據(jù)庫(kù)中各個(gè)表的空間占用情況,為數(shù)據(jù)庫(kù)優(yōu)化和維護(hù)提供數(shù)據(jù)支持。

到此這篇關(guān)于MySQL如何查看某個(gè)表所占空間大小的文章就介紹到這了,更多相關(guān)MySQL查看表空間大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

汾西县| 应城市| 邵阳县| 泌阳县| 临高县| 尚义县| 光山县| 静海县| 科尔| 九江县| 东安县| 岫岩| 高雄县| 嘉善县| 柳林县| 平安县| 体育| 乃东县| 泸州市| 巴中市| 琼海市| 若尔盖县| 沾益县| 马龙县| 惠东县| 大余县| 台江县| 宜州市| 柘城县| 锦州市| 上饶县| 阿克苏市| 龙陵县| 平乡县| 丰县| 左云县| 商城县| 五指山市| 清河县| 大冶市| 新晃|