碎片产生的原因

(1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白、被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大;

(2)当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;

(3)当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分;

例如:

一个表有1万行,每行10字节,会占用10万字节存储空间,执行删除操作,只留一行,实际内容只剩下10字节,但MySQL在读取时,仍看做是10万字节的表进行处理,所以,碎片越多,就会越来越影响查询性能。

查看表碎片大小

(1)查看某个表的碎片大小

mysql> SHOW TABLE STATUS LIKE '表名';

结果中'Data_free'列的值就是碎片大小

(2)列出所有已经产生碎片的表

mysql> select table_schema db, table_name, data_free, engine from information_schema.tables where table_schema not in ('information_schema', 'mysql') and data_free > 0;

清除表碎片

(1)MyISAM表

mysql> optimize table 表名

(2)InnoDB表

mysql> alter table 表名 engine=InnoDB

建议

清除碎片操作会暂时锁表,数据量越大,耗费的时间越长,可以做个脚本,定定期检查mysql中 information_schema.TABLES字段,查看 DATA_FREE 字段,大于0话,就表示有碎片,例如每周三凌晨,检查DATA_FREE字段,大于自己认为的警戒值的话,就清理一次。

mysql清除表空间导入_MySQL 清除表空间碎片相关推荐

  1. win10误删的注册表能还原吗_win10注册表怎么导入 win10注册表误删除怎么恢复

    注册表是系统的重要数据组件,包含有系统中的各种关键信息和应用,有些用户不太注重注册表,只有等到 win10注册表怎么导入: 1.首先在登录win10系统打开注册表,在打开的注册表编辑器中点击文件--导 ...

  2. mysql表空间权限_MySQL InnoDB表空间加密示例详解

    前言 从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系 ...

  3. mysql建表的规则_MYSQL建表规则 - Love彼岸花开的个人空间 - OSCHINA - 中文开源技术交流社区...

    建立表规约 [强制]表名.字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字.数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑. 说明:MySQL ...

  4. mysql多表连接 索引_MySQL多表查询之外键、表连接、子查询、索引

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, ...

  5. mysql多表查询书籍_MySQL多表查询及子查询

    1. MySQL数据库执行查询操作时的查询流程: 请求-->查询缓存 请求-->查询缓存-->解析器-->预处理器-->优化器-->查询执行引擎-->存储引擎 ...

  6. mysql取出数据外键_mysql数据表有外键,应注意的几点(目前学习所获得的经验)...

    mysql : 1.有做外键的表子表和父表的引擎要一致才能添加数据:否则报外键约束错误 2.数据 类型要一致,不然添加补了 外键: 3.InnoDB和 myisam的区别(来源:PHP100中文网) ...

  7. mysql 修复表 阿里云_MySql数据表修复方法-阿里云开发者社区

    mysqld进程在一个写入当中被杀死.计算机的意外关闭(例如,如果计算机掉电).一个硬件错误这章描述如何检查和处理在MySQL数据库中的数据损坏.如果你的表损坏很多,你应该尝试找出其原因!见G.1 调 ...

  8. mysql 单表多级查询_mysql单表与多表查询

    单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[, ..., 字段n])] values (数据1[, ..., 数据n])[, ... ...

  9. mysql多表查询练习_MySQL多表查询综合练习答案

    一.综合练习 1.1 init.sql文件内容 /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Serv ...

最新文章

  1. java 类隔离_微服务架构中zuul的两种隔离机制实验
  2. linux消息通信无法接收,进程间通信:消息队列有关问题:进程1接收不到进程2的消息...
  3. 面试官:说说你知道的几种负载均衡分类
  4. mysql触发器trigger
  5. python列表解析
  6. linux系统怎么用wifi,【教程】Wii安装运行可用WIFI的Linux系统全攻略
  7. BZOJ4155 : [Ipsc2015]Humble Captains
  8. linux ubantu扩展空间,ubuntu 扩展存储空间
  9. python-random种子
  10. python怎么做软件程序_Revit二次开发python怎么做?人工智能python语言在BIM软件高效建模的运用尝试...
  11. 2天驾驭div+css_老婆竟然只知道几个css伪类,不行得惩罚她了
  12. add php support,WordPress add_theme_support() 函数详解
  13. 电脑屏幕总是晚上定时开启护眼模式,变成黄色?教你这招解决它
  14. 几分钟来了解下什么是嵌入式开发?
  15. 3250灵魂附体?诺基亚PureView概念机809
  16. 基于SVM算法的男女生分类器
  17. Groovy Script 获取当前时间函数
  18. Android ViewFlipper 使用
  19. java 二进制 2个字节 高位 低位_高位字节、低位字节
  20. Android学习之利用Intent传递数据

热门文章

  1. 屁精 apple-polisher
  2. SpringBoot狂神说【笔记】
  3. 湖南职业中专学校编程C语言,衡阳学c语言程序设计规模
  4. JavaWeb在线问题.Linux服务器磁盘Disk核查
  5. 转载:使用USBASP给Arduino烧写bootloader教程
  6. 【3D目标检测】Complex-YOLOv4测试及分析
  7. 《一切皆是映射:代码的本质》一致性哈希算法(consistent hashing)
  8. 重学 JavaSE 基础
  9. Pandas.Series转JSON
  10. vue动态添加路由之避坑指南