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

實例講解MySQL統(tǒng)計庫表大小

 更新時間:2020年07月04日 11:55:07   作者:懂點IT的耿小廚  
這篇文章主要介紹了MySQL統(tǒng)計庫表大小的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下

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

1、統(tǒng)計預估數(shù)據(jù)量

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

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

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

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

2、統(tǒng)計實際數(shù)據(jù)量

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

創(chuàng)建路徑

創(chuàng)建一個工作路徑,保存腳本及臨時文件等

mkdir -p /usr/local/data_size

創(chuàng)建統(tǒng)計庫及表

在需要統(tǒng)計的數(shù)據(jù)庫實例上創(chuàng)建統(tǒng)計庫

SQL> create database bak_db;

創(chuàng)建統(tǒng)計的存儲過程

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;

創(chuàng)建腳本

vim    data.sh
/* 插入如下內(nèi)容*/

#! /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

# 創(chuàng)建統(tǒng)計表
 /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));" 

# 導入數(shù)據(jù)
 /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;"

# 生成庫名及表名,當然該步驟也可以從數(shù)據(jù)字段中獲取
 /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       # 如果之前的步驟在主庫金學習學習,則建議暫停一段時間 以免后面統(tǒng)計的時候無法獲得表及內(nèi)容,如果前面的步驟都在從庫,則可以省略該步驟
echo 'start call procedure' 
# 調(diào)用存儲過程 統(tǒng)計每個表的記錄條數(shù)
/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();"

# 把表及數(shù)據(jù)導出
/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

# 將表及結(jié)果導入主庫(從庫相當于刪除在重建了一次)
/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;"

結(jié)果如下:

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

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

以上就是實例講解MySQL統(tǒng)計庫表大小的詳細內(nèi)容,更多關(guān)于MySQL統(tǒng)計庫表大小的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql優(yōu)化取隨機數(shù)據(jù)慢的方法

    mysql優(yōu)化取隨機數(shù)據(jù)慢的方法

    mysql取隨機數(shù)據(jù)慢,怎么辦?下面小編與大家一起來看看mysql取隨機數(shù)據(jù)慢優(yōu)化的過程。
    2013-11-11
  • MySQL數(shù)據(jù)定義語言DDL的基礎語句

    MySQL數(shù)據(jù)定義語言DDL的基礎語句

    這篇文章主要介紹了MySQL數(shù)據(jù)定義語言DDL的基礎語句,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 在Windows環(huán)境下安裝MySQL 的教程圖解

    在Windows環(huán)境下安裝MySQL 的教程圖解

    這篇文章主要介紹了在Windows環(huán)境下安裝MySQL 的教程圖解,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • mysql通過binlog日志復制主從同步的實現(xiàn)

    mysql通過binlog日志復制主從同步的實現(xiàn)

    本文主要介紹了mysql通過binlog日志復制主從同步的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • 查詢數(shù)據(jù)庫空間(mysql和oracle)

    查詢數(shù)據(jù)庫空間(mysql和oracle)

    本文通過代碼示例詳細介紹了如何查詢MySQL數(shù)據(jù)空間和Oracle數(shù)據(jù)空間,具有一定的參考價值,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • MySQL?數(shù)據(jù)庫如何實現(xiàn)存儲時間

    MySQL?數(shù)據(jù)庫如何實現(xiàn)存儲時間

    這篇文章主要介紹了MySQL?數(shù)據(jù)庫如何實現(xiàn)存儲時間,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MySQL之索引結(jié)構(gòu)解讀

    MySQL之索引結(jié)構(gòu)解讀

    這篇文章主要介紹了MySQL之索引結(jié)構(gòu)解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • MySQL事務管理的作用詳解

    MySQL事務管理的作用詳解

    事務就是一組DML語句組成,這些語句在邏輯上存在相關(guān)性,這一組DML語句要么全部成功,要么全部失敗,是一個整體。MySQL提供一種機制,保證我們達到這樣的效果。事務還規(guī)定不同的客戶端看到的數(shù)據(jù)是不相同的
    2022-08-08
  • MySQL replace into 語句淺析(二)

    MySQL replace into 語句淺析(二)

    這篇文章主要介紹了MySQL replace into 語句淺析(二),本文著重給出了幾個特殊案例分析,需要的朋友可以參考下
    2015-05-05
  • Windows?Server?2019?MySQL數(shù)據(jù)庫的安裝與配置理論+遠程連接篇

    Windows?Server?2019?MySQL數(shù)據(jù)庫的安裝與配置理論+遠程連接篇

    mysql是一款關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由MySQL?AB公司開發(fā),目前屬于Oracle旗下產(chǎn)品,MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。MySQL也是一款開源的SQL數(shù)據(jù)庫管理系統(tǒng),是眾多小型網(wǎng)站作為網(wǎng)站數(shù)據(jù)庫的首選數(shù)據(jù)庫
    2023-05-05

最新評論

化隆| 汨罗市| 丰都县| 渭南市| 石河子市| 勃利县| 海宁市| 化州市| 衡阳市| 金门县| 固原市| 星子县| 鄂托克前旗| 清流县| 金寨县| 班戈县| 和林格尔县| 蒲城县| 珲春市| 施甸县| 讷河市| 济南市| 西昌市| 拉孜县| 临猗县| 应城市| 金溪县| 信宜市| 望城县| 余江县| 铜山县| 偏关县| 镇宁| 炉霍县| 连平县| 阳新县| 平邑县| 罗田县| 太仆寺旗| 招远市| 文化|