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 $MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "alter table $t_name engine='"$D_ENGINE"'" if [ $? -eq ] then
echo "shrink table $t_name ended." >>con_table.log
sleep
else
echo "shrink failed!" >> con_table.log
fi done
MySql 碎片的更多相关文章
- MysqL碎片整理优化
先来说一下什么是碎片,怎么知道碎片有多大! 简单的说,删除数据必然会在数据文件中造成不连续的空白空间,而当插入数据时,这些空白空间则会被利用起来.于是造成了数据的存储位置不连续,以及物理存储顺序与理论 ...
- mysql 碎片清理
在MySQL中,我们经常会使用VARCHAR.TEXT.BLOB等可变长度的文本数据类型.不过,当我们使用这些数据类型之后,我们就不得不做一些额外的工作——MySQL数据表碎片整理. 那么,为什么在使 ...
- Mysql 碎片整理与统计信息收集
======重新收集统计信息======= 1.分析和存储表的关键字分布 analyze table table_name; analyze 用于收集优化器的统计信息.和tuning相关:对 myis ...
- MySQL碎片整理小节--实例演示
MYSQL之磁盘碎片整理 清澈,细流涓涓的爱 数据库引擎以InnoDB为主 1.磁盘碎片是什么 InnoDB表的数据存储在页中,每个页可以存放多条记录,这些记录以树形结构组织,这棵树称为B+树. ...
- MYSQL 碎片查询
查询库中碎片大于1G的所有表 数据总大小:DATA_LENGTH+INDEX_LENGTH实际表空间大小: TABLE_ROWS*AVG_ROW_LENGTH碎片大小:(DATA_LENGTH+IND ...
- Mysql 表分区
是否支持分区:mysql> show variables like '%partition%';+-----------------------+-------+| Variable_name ...
- 浅析MySQL数据碎片的产生(data free)
浅析MySQL数据碎片的产生 2011-03-30 09:28 核子可乐译 51CTO 字号:T | T MySQL列表,包括MyISAM和InnoDB这两种最常见的类型,而根据经验来说,其碎片的产生 ...
- 【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
本文收集于本人的笔记本,由于找不到原文出处.在此省略,如哪位知道可以联系我加上. 核心是利用mysql系统表和“optimize table 表名”命令,对mysql数据表进行空间的释放.由于dele ...
- MySQL整理碎片
1 innodb引擎表 alter table TABLE_NAME engine='innodb'; 还有一种方法 optiize table TABLE_NAME; http://stackove ...
随机推荐
- java Web中页面跳转方式之请求转发
1.在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在Servlet01中setAttribute()保存数据在Servlet02中由getAt ...
- 深入剖析SolrCloud(三)
作者:洞庭散人 出处:http://phinecos.cnblogs.com/ 本博客遵从Creative Commons Attribution 3.0 License,若用于非商业目的,您可以自由 ...
- css溢出文本显示省略号
css div { width: 200px; height: 200px; border: 1px solid; /* 以下四条缺一不可 其中 display:block 为隐藏条件 */ disp ...
- SEO网站结构优化
结构布局优化:用扁平化结构(层次结构超过三层小蜘蛛就不愿意爬了) 控制首页链接数量(中小网站100以内,页面导航.底部导航.锚文字链接等) 扁平化的目录层次(小蜘蛛跳转3次可以到达网站内任何一个内页, ...
- Python基础入门-集合
今天给大家分享的是python中集合(set)的概念,集合这个词其实和高中学的数学集合的概念很相近,或者作为初学者你就可以把它理解为数学当中的集合.在python中集合(set)是由一个个键组成的,但 ...
- (转)Asp.Net生命周期系列一
原文地址:http://www.cnblogs.com/skm-blog/archive/2013/07/07/3176713.html Asp.Net生命周期对于初级甚至中级程序员来说,一直都是一个 ...
- 20169219 使用Metaspoit攻击MS08-067实验报告
MS08-067漏洞介绍 MS08-067漏洞的全称为"Windows Server服务RPC请求缓冲区溢出漏洞",如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允 ...
- 随便写个bat存档
@echo off @COLOR @echo ------------切换Hosts环境--------------- :Again @set /p choice="切换模式:A:应用环境, ...
- 停止Nginx服务
查询nginx进程信息 chen@ubuntu:~$ ps -ef |grep nginx root : ? :: nginx: master process /usr/sbin/nginx -g d ...
- mysql sp 练习游标和预编译
create procedure Jack_count_cur_dual() BEGIN ); ; DECLARE mycur CURSOR for SELECT table_name FROM tt ...