电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

實例講解MySQL統計庫表大小

瀏覽:41日期:2023-10-14 10:48:28

統計每個庫每個表的大小是數據治理的其中最簡單的一個要求,本文將從抽樣統計結果及精確統計結果兩方面來統計MySQL的每個庫每個表的數據量情況。

1、統計預估數據量

mysql數據字典庫information_schema里記錄了統計的預估數據量(innodb引擎表不準確,MyISAM引擎表準確)及數據大小、索引大小及表碎片的大小等信息。

如果想了解每個庫及表的大概數據量級,可以直接查information_schema.tables進行統計即可。例如:

SELECT table_schema,table_name,table_rows,data_length+index_length+ data_free data_size FROM information_schema.`TABLES` WHERE table_schema IN (’db1’,’db2’);

其中data_size單位為B

實例講解MySQL統計庫表大小

如上文所述,統計信息里的數據條數及size是根據部分數據抽樣統計的值,與實際大小存在差異,且表越大,差異越明顯,如果想知道每張表的實際情況,需用后續的方法。

2、統計實際數據量

想要統計每張表的實際大小就得去遍歷每個表算出對的記錄數,通過查看表空間大小(每個表獨立表空間)查看每個表的size。通過以下步驟即可達到精確統計的目的。

創建路徑

創建一個工作路徑,保存腳本及臨時文件等

mkdir -p /usr/local/data_size

創建統計庫及表

在需要統計的數據庫實例上創建統計庫

SQL> create database bak_db;

創建統計的存儲過程

SQL> use bak_db;SQL>CREATE PROCEDURE `p_db_size`()BEGINDECLARE v_id INT;DECLARE v_maxid INT;DECLARE v_tbname VARCHAR(50);DECLARE v_dbname VARCHAR(50);DECLARE v_sql_upd VARCHAR(200);SET v_id =(SELECT MIN(id) FROM bak_db.tb_size);SET v_maxid =(SELECT MAX(id) FROM bak_db.tb_size);WHILE v_id <=v_maxidDOSET v_tbname = (SELECT tbname FROM bak_db.tb_size WHERE id=v_id);SET v_dbname = (SELECT dbname FROM bak_db.tb_size WHERE id=v_id);SET v_sql_upd = CONCAT(’update bak_db.tb_size set tb_rows=(select count(*) from ’,v_dbname,'.',v_tbname,') where id=',v_id); SET @v_sql_upd := v_sql_upd; PREPARE stmt FROM @v_sql_upd; EXECUTE stmt ; DEALLOCATE PREPARE stmt; SET v_id = v_id +1;END WHILE; END;

創建腳本

vim data.sh/* 插入如下內容*/#! /bin/bashcd /usr/local/data_sizedu -s /data/mysql/mysql3306/data/db1/* |grep -v '.frm' |grep -v '.opt' >/usr/local/data_size/data_size du -s /data/mysql/mysql3306/data/db2/* |grep -v '.frm' |grep -v '.opt'>>/usr/local/data_size/data_size# 后面4步是拼接成sql awk ’{print 'insert into bak_db.tb_size(size,tb_route)values('''$0}’ /usr/local/data_size/data_size >/usr/local/data_size/data_size1 awk ’{print $0';'}’ /usr/local/data_size/data_size1 >/usr/local/data_size/data_size.sqlsed -i 's#t#,’#g' /usr/local/data_size/data_size.sqlsed -i 's#;#’);#g' /usr/local/data_size/data_size.sql# 創建統計表 /usr/local/mysql5.7/bin/mysql -uroot -p’Test#123456’ -h 192.168.28.132 -e 'drop table if exists bak_db.tb_size;CREATE TABLE IF NOT EXISTS bak_db.tb_size ( id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT ,size INT,tb_route VARCHAR(200),tbname VARCHAR(50),dbname VARCHAR(50),tb_rows INT(11));' # 導入數據 /usr/local/mysql5.7/bin/mysql -uroot -p’Test#123456’ -h 192.168.28.132 -e 'use bak_db;truncate table bak_db.tb_size;source /usr/local/data_size/data_size.sql;'# 生成庫名及表名,當然該步驟也可以從數據字段中獲取 /usr/local/mysql5.7/bin/mysql -uroot -p’Test#123456’ -h 192.168.28.132 -e 'use bak_db;UPDATE bak_db.tb_size SET tbname=REPLACE(SUBSTRING_INDEX(tb_route,’/’,-1),’.ibd’,’’);' /usr/local/mysql5.7/bin/mysql -uroot -p’Test#123456’ -h 192.168.28.132 -e 'UPDATE bak_db.tb_size SET dbname=LEFT (SUBSTRING_INDEX(tb_route,’/’,-2),INSTR(SUBSTRING_INDEX(tb_route,’/’,-2),’/’)-1);'sleep 10 # 如果之前的步驟在主庫金學習學習,則建議暫停一段時間 以免后面統計的時候無法獲得表及內容,如果前面的步驟都在從庫,則可以省略該步驟echo ’start call procedure’ # 調用存儲過程 統計每個表的記錄條數/usr/local/mysql5.7/bin/mysql -uroot -p’Test#123456’ -h 192.168.28.132 -e 'use bak_db;call bak_db.p_db_size();'# 把表及數據導出/usr/local/mysql5.7/bin/mysqldump -uroot -p’Test#123456’ -h 192.168.28.132 --single-transaction bak_db tb_size >/usr/local/data_size/tb_size.sql# 將表及結果導入主庫(從庫相當于刪除在重建了一次)/usr/local/mysql5.7/bin/mysql -uroot -p’Test#123456’ -h 192.168.28.128 -e 'use bak_db;source /usr/local/data_size/tb_size.sql;'

結果如下:

實例講解MySQL統計庫表大小

可以看出精確值與統計信息里的值差異還是很大的,且表越大 差異越明顯。

TIPS: 本文精確統計的腳本還有許多優化空間,寫的比較倉促,大家可以按需自行調整,水平有限,歡迎斧正。如有問題,歡迎與我溝通。

以上就是實例講解MySQL統計庫表大小的詳細內容,更多關于MySQL統計庫表大小的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 菏泽知彼网络科技有限公司| 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 步入式高低温测试箱|海向仪器 | 宁波普瑞思邻苯二甲酸盐检测仪,ROHS2.0检测设备,ROHS2.0测试仪厂家 | 五轴加工中心_数控加工中心_铝型材加工中心-罗威斯 | 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | CCC验厂-家用电器|服务器CCC认证咨询-奥测世纪 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 火锅底料批发-串串香技术培训[川禾川调官网] | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 北京京云律师事务所| cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 致胜管家软件服务【在线免费体验】 | 分类168信息网 - 分类信息网 免费发布与查询 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 |