mysql中如何优化表释放表空间
作者:风神幻龙 发布时间:2024-01-18 09:58:27
mysql优化表释放表空间
方法一:optimize table table_name
这是我们经常见到的方法,这里就不在过多介绍。
方法二:alter table table_name engine=engine_name
该方法通常用于切换表的引擎,例如MyISAM转为InnoDB,但是同样适用于释放表空间,只不过切换后的引擎和原来的engine相同罢了。
注意事项
1.这两种方式都适用于我们常用的表,myisam和innodb。
2.优化表的时候会锁表,数据表越大,耗时越长,因此不要在网站忙时进行表优化。
mysql空间释放
今天还原了一个数据库。发现数据量有数十GB,想着看看哪些表的数据量多,于是查询了下。数据还真不少。3000多万行,这儿一张表居然有近1400万数据。....惭愧。以前没做什么处理。
USE information_schema; # 使用数据库元数据;
SELECT table_name,table_rows FROM TABLES WHERE table_schema = 'tjpro' order by table_rows desc; #查询表名和表行数,数据库为tjpro
SELECT sum(table_rows) FROM tables WHERE table_schema = 'tjpro'; #统计行数
SELECT table_name,table_rows FROM tables WHERE table_schema = 'tjpro' order by table_rows desc limit 100; #查询最多行数的表前100
使用delete删除mysql数据的时候,mysql并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会彻底释放空间。被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。即,删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间。 -- 引自mysql
如何整理,清理这些空间呢,请往下看。
查询占用空间大小
这时候,我删除了数据最多的mis_system_data_remind_mas 表(测试库哟)之后。我再次查询该表占用的空间大小。
SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='dbname' AND TABLE_NAME='tablename(你的表名)';
默认是M为单位。第二栏。约为2.8个GB大小。
然后清理一下。使用:OPTIMIZE TABLE
清理碎片
官方推荐使用 OPTIMIZE TABLE 命令来优化表,该命令会重新利用未使用的空间,并整理数据文件的碎片。
等待的时间有点长。等完成后,再次查询空间:
SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='dbname' AND TABLE_NAME='tablename(你的表名)';
可以看到,释放的空间约为2.8GB。
来源:https://blog.csdn.net/a7442358/article/details/88312517


猜你喜欢
- 先来看javascript的直接写在了input上 <input name="pwuser" type="
- PHP addAttribute() 函数实例给根元素和 body 元素添加一个属性:<?php $note=<<<
- 一、简单使用def TestLogBasic(): import logging  
- 本文实例讲述了Python实现的逻辑回归算法。分享给大家供大家参考,具体如下:使用python实现逻辑回归Using Python to I
- 一、前言Python logging 模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。程序开发过程中,很多程序都有记录日志的需求,
- 在python中,可以把for循环写在一行,生成一个新的列表,使用起来非常方便,下面举几个简单例子体会一下。1.简单的for...[if].
- 用windows账号还是可以登录的。 查找问题的过程: 第一步: 启动所有与SQL有关的服务,问题依旧; 第二步: 查看windows防火墙
- 摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组
- import os os.os.listdir(path) 然后再一个一个的分析文件和目录 通过和dos命令dir的巧妙结合,可以很轻松的做
- 此段代码可以利用剪切板,完成自动复制粘贴等功能。(Windows) import sysimport os.pathimport
- 本文实例讲述了django框架基于queryset和双下划线的跨表查询操作。分享给大家供大家参考,具体如下:前面篇随笔写的是基于对象的跨表查
- 打开文件import xlrddata = xlrd.open_workbook('路径')获取文件中所有工作表的名称。da
- 由于最近有个任务需要在python环境下跑,项目是python3.6 + tensorflow1.3.1.现总结安装环境:卸载Python3
- ORDER BY _column1, _column2; /* _column1升序,_column2升序 */ ORDER BY _col
- mysql建表test;安装logstash(跟es版本一致)# 下载wget https://repo.huaweicloud.com/l
- 有框计算器这个计算器我们用到了Python自带的Tkinter库# 导入tkinter库import tkinter我们要对窗口进行一些基本
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。JSON 函数使用 JSON
- 命令行下能正常登陆MYSQL,navicat能正常连接MySQL,但是IDEA连接不上MySQL,emmm,什么情况。。。看了一下错误提示:
- 昨天打包下载了一个服务器整站,拿到这个*.mdb的文件后,却不知道怎么用,百度了一下,才知道是一种木马打包的形式文件,不能用WINrar来解
- 目录一、安装与配置二、定义模型三、生成模型四、访问Django Admin五、操作数据六、最后一、安装与配置Djongo的项目官方地址为:h