• [运维]如何快速压缩一个数据库的硬盘占用大小(简单粗暴但有效)



    前言

    在维护网站时我们经常会遇到数据库占用服务器磁盘空间的问题。高端的食材往往只需要采用最朴素的烹饪方式。本文我讲一个简单粗暴但有效的方法。本文以SqlServer为例进行介绍,但所有关系型数据库均适用这个解决方案。


    一、数据库文件为什么会那么大?

    数据库文件主要包含3部分内容:数据空间、日志、索引空间。

    在这里插入图片描述

    1.数据空间

    也就是数据表本身的数据。这部分内容的压缩只能靠数据清理。如僵尸用户数据清理。数据清理确实是一个有效的方法。但这不是本文要讲的方法。

    2.日志空间

    日志作用是用来记录增删改等对数据库有更新的内容的记录(对数据库的改动),而查询的语句如show、select语句,不会被日志记录。主要用于数据恢复,和日志查看。
    清理日志是一个简单有效的解决方案。具体怎么清理数据库的日志空间,网上有很多教程,本文展开讲。

    3.索引空间

    索引相当于一本书的目录,通过目录我们可以迅速定位书中要找的内容。索引的实现主要是通过B+树。
    建索引的优缺点:
    优点:大大加快对数据的查询速度
    缺点:占物理空间,对数据库进行增删改的时候也要动态的维护索引。
    如果我们对一张数据表某些字段建立了索引,它就会随着用户操作对其进行增删改,所以一张数据表的索引空间随着时间变化,会慢慢变大。
    具体怎么清理数据表的索引空间,网上有很多教程,本文展开讲。

    4.其他

    数据库当然还有其他内容会占用空间。但我平时用的不多,就不讲了。

    二、我的解决方案

    我们可以把数据库通过生成脚本的方式,把数据表结构和数据备份下来。然后删除原有数据库,再运行刚生成的数据库脚本,重新生成一个只有数据空间的数据库。
    在这里插入图片描述


    总结

    以上就是今天要讲的内容。这是一种简单粗暴的方式,当然也有更加优雅的方式,比如花费点时间精力去编写数据库清理脚本每隔一段时间自动运行一次,清理日志空间和索引空间。
    类似的方法也可以用来压缩平时使用电脑软件造成的日志等空间大小,也就是重装软件。
    你会发现往往把一个大型软件重装以后会压缩很多的硬盘空间出来。如Photoshop、visual studio 等。

  • 相关阅读:
    智能书架中RFID技术是如何实现图书定位的
    java入坑之注解
    [C++黑马程序员笔记]P106-P112类和对象-对象特性(1)
    超越ChatGPT:大模型的智能极限
    [C/C++]数据结构 链表OJ题: 链表分割
    基于springboot+vue的青年公寓服务平台
    Qt 10进制和16进制转换
    C语言实现给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
    OA系统都能为企业带来什么
    阻容降压电路:每个元器件计算选型
  • 原文地址:https://blog.csdn.net/guigenyi/article/details/128209708