• MySQL 碎片


    查看某个表所占空间,以及碎片大小。

    select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables where TABLE_SCHEMA='test';

    或者

    select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables where data_free !=0;


    +------------+--------+------------+--------+-----------+
    | table_name | engine | table_rows | length | DATA_FREE |
    +------------+--------+------------+--------+-----------+
    | curs       | InnoDB |          0 |  16384 |         0 |
    | t          | InnoDB |         10 |  32768 |         0 |
    | t1         | InnoDB |          9 |  32768 |         0 |
    | tn         | InnoDB |          7 |  16384 |         0 |
    +------------+--------+------------+--------+-----------+

    table_name 表的名称
    engine :表的存储引擎
    table_rows  表里存在的行数
    data_length 表的大小(表数据+索引大小)
    DATA_FREE :表碎片的大小
    以上单位都是byte字节

    整理碎片:
    整理碎片过程会锁边,尽量放在业务低峰期做操作

    1、myisam存储引擎清理碎片
      optimize table 表名,表名;
    2、innodb存储引擎清理碎片
      alter table 表名 engine=innodb;

    整理碎片:
    整理碎片过程会锁边,尽量放在业务低峰期做操作
    1.MySQL官方建议不要经常(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可。
    2.OPTIMIZE TABLE运行过程中,MySQL会锁定表。
    3.默认情况下,直接对InnoDB引擎的数据表使用OPTIMIZE TABLE或脚本回收innodb表碎片 

    脚本:(脚本未测试) 

    #!/bin/bash
    DB=test
    USER=root
    PASSWD=root123
    HOST=192.168.2.202
    MYSQL_BIN=/usr/local/mysql/bin
    D_ENGINE=InnoDB
    $MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='"$DB"' "';" | grep -v "TABLE_NAME" >tables.txt
    
    for t_name in  `cat tables.txt`
    do
        echo "Starting table $t_name......"
        sleep 1
    
        $MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "alter table $t_name engine='"$D_ENGINE"'"
    
     if [ $? -eq 0 ]  then
         echo "shrink table $t_name ended." >>con_table.log
        sleep 1
    else 
         echo "shrink failed!" >> con_table.log
    fi
    
    done
  • 相关阅读:
    C++(封装一)
    数据结构之链式栈(二)
    C++(函数重载二)
    不计算阶乘获得结果末尾0的个数
    附加产品
    刘子闻讲的高精度【太强了】
    字符串相关函数
    回文素数
    蛇形填数
    筛法模版
  • 原文地址:https://www.cnblogs.com/xuey/p/9103809.html
Copyright © 2020-2023  润新知