好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 實例講解MySQL統計庫表大小

實例講解MySQL統計庫表大小

熱門標簽:電話機器人是電腦呼號嗎 上海市三維地圖標注 博樂電銷機器人 400電話到哪辦理優惠 云南大數據外呼系統 怎么更改高德地圖標注 南寧外呼系統招商 機器人打電銷電話 鄭州網絡外呼系統價錢

統計每個庫每個表的大小是數據治理的其中最簡單的一個要求,本文將從抽樣統計結果及精確統計結果兩方面來統計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

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

2、統計實際數據量

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

創建路徑

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

mkdir -p /usr/local/data_size

創建統計庫及表

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

SQL> create database bak_db;

創建統計的存儲過程

SQL> use bak_db;
SQL>CREATE PROCEDURE `p_db_size`()
BEGIN
DECLARE 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_maxid
DO
SET 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/bash
cd /usr/local/data_size
du -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.sql
sed -i "s#\t#,'#g" /usr/local/data_size/data_size.sql
sed -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;"

結果如下:

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

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

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

您可能感興趣的文章:
  • 概述MySQL統計信息
  • 一個Shell小腳本精準統計Mysql每張表的行數實現
  • mysql實現多表關聯統計(子查詢統計)示例
  • Python實現Mysql數據統計及numpy統計函數
  • sqlserver/mysql按天、按小時、按分鐘統計連續時間段數據【推薦】
  • 詳解mysql 獲取某個時間段每一天、每一個小時的統計數據
  • PHP+MySQL實現對一段時間內每天數據統計優化操作實例
  • php 廣告點擊統計代碼(php+mysql)
  • MySQL 8.0統計信息不準確的原因

標簽:秦皇島 杭州 恩施 寧夏 白銀 定西 澳門 益陽

巨人網絡通訊聲明:本文標題《實例講解MySQL統計庫表大小》,本文關鍵詞  實例,講解,MySQL,統計,庫表,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《實例講解MySQL統計庫表大小》相關的同類信息!
  • 本頁收集關于實例講解MySQL統計庫表大小的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 黄色aa网站| 媚药久久精品一区二区| 好爽胸大好深好多水| 极品嫩模啪啪喷水久久爱一区二区 | 波多野结衣被躁57分钟的演员| 66m视频| 女性脚气初期图片| 国产在线91精品入口首页| 91精品国产亚洲Av高清裘花| 在线成人??视频嗯嗯啊AV| 越南黄色一级片| 韩国三级理论bt种子下载| A毛片全部免费播放无码| 亚洲国产精品无码第一区二区三区| 调教晶晶| 午夜精品福利视频| yy6080理论片| 91亚洲精品国偷拍自产乱码| 色欲久久综合亚洲精品蜜桃| 欧美69精品国产成人| 娇妻被邻居黑人玩得呻吟动漫| J8又粗又长又粗又硬又大| 三级理论片| 欧美在线三级| 啊~嗯去浴室里做H动态图| 《玉蒲团之西厢艳谈》| 日本老妇成熟| jijzzizz18女学生| 半夜扒开麻麻的内裤摸她出白浆| 做爰XXXⅩA高潮AV| 婷婷影院在线综合免费视频| 啊用力嗯轻一点~按摩师| 免费色视频在线观看| 四虎亚洲精品国产色情999| 慈芬好爽?好紧?宝贝别夹阿昌| 久久精品手机| 伊人网站在线观看| 一边吃胸一边摸着下面的污物| 男人把女人皮曰舒服视频| japanesepooping脱粪| 亚洲综合图|