数据库文件压缩
数据库在使用一段时间后,时常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。当数据库中没有数据时,可以修改数据库文件属性直接改变其占用空间,但当数据库中有数据时,这样做会破坏数据库中的数据,因此需要使用压缩的方式来缩减数据库空间。可以在数据库属性选项中选择“Auto shrink”选项,让系统自动压缩数据库,也可以用人工的方法来压缩。人工压缩数据库有以下两种方式:
1、用Enterprise Manager 压缩数据库
在Enterprise Manager 中在所要压缩的数据库上单击右键,从快捷菜单中的“所有任务(All Tasks)”中选择“Shrink Database(压缩数据库)”选项
、用Transact-SQL 命令压缩数据库
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令来压缩数据库。其中DBCC SHRINKDATABASE 命令对数据库进行压缩,DBCC SHRINKFILE 命令对数据库中指定的文件进行压缩。
(1) DBCC SHRINKDATABASE
DBCC SHRINKDATABASE 命令语法如下:
DBCC SHRINKDATABASE (database_name [, target_percent]
[, {NOTRUNCATE | TRUNCATEONLY}] )
各参数说明如下:
target_percent 指定将数据库压缩后,未使用的空间占数据库大小的百分之几。如果指定的百分比过大,超过了压缩前未使用空间所占的比例,则数据库不会被压缩。并且压缩后的数据库不能比数据库初始设定的容量小。
NOTRUECATE
将数据库缩减后剩余的空间保留在数据库,中不返还给操作系统。如果不选择此选项,则剩余的空间返还给操作系统。
TRUNCATEONLY
将数据库缩减后剩余的空间返还给操作系统。使用此命令时SQL Server 将文件缩减到最后一个文件分配,区域但不移动任何数据文件。选择此项后,target_percent 选项就无效了。
压缩数据库mytest 的未使用空间为数据库大小的20%。
dbcc shrinkdatabase (mytest, 20)
运行结果如下:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
(2) DBCC SHRINKFILE
DBCC SHRINKFILE 命令压缩当前数据库中的文件。其语法如下:
DBCC SHRINKFILE ( {file_name | file_id }
{ [, target_size] |
[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
各参数说明如下:
file_id
指定要压缩的文件的鉴别号(Identification number, 即ID)。文件的ID 号可以通过 FILE_ID()函数或如本章前面所讲述的Sp_helpdb 系统存储过程来得到。
target_size
指定文件压缩后的大小。以MB 为单位。如果不指定此选项,SQL Server 就会尽最大可能地缩减文件。
EMPTYFILE
指明此文件不再使用,将移动所有在此文件中的数据到同一文件组中的其它文件中去。执行带此参数的命令后,此文件就可以用ALTER DATABASE 命令来删除了。
其余参数NOTRUNCATE 和TRUNCATEONLY 与DBCC SHRINKDATABASE 命令中的含义相同。
例6-15: 压缩数据库mydb 中的数据库文件mydb_data2 的大小到1MB。 use mydb dbcc shrinkfile (mydb_data2, 1)
Ⅱ 如何压缩Access数据库
Microsoft的Access继承了一些FoxBase DBF的特点,个人估计是DBF的改进,比如FoxBase说在删除数据后其实并没有真正删除,只是加上一个删除标记,在需要的时候可以用Recall命令恢复这些数据,如果想彻底删除,首先需要独占访问数据表,然后使用Pack命令来清除这些已经被删除的数据,可以称之为“压缩”数据表。 Access也是一样,如果是文本和数字等一般数据恐怕不太明显,如果是OLE对象,加入后MDB文件大小会剧增,而在删除这些数据行后文件大小并没有相应减少,日积月累这些无用的数据不光占用了大量硬盘空间,而且也会降低数据库的访问效率,这时已经没有Pack命令可用了,但可以使用Access的“压缩和修复数据库”(在“工具”菜单中)来将那些无用的数据清除掉。如果你的程序使用Access作为数据库,使用菜单命令来“压缩数据库”肯定是不太合适的,况且有时候需要自动来完成这个操作,所以我们需要把它用代码来完成,需要调用COM对象的方法,压缩后的数据库被保存为另外一个文件,再把原文件删除(其实Access自己也是这么做的),代码如下:#include "objbase.h" //牵涉到COM对象,必须包含此头文件AnsiString srcmdb="c://test.mdb"; //原文件名(压缩之前)
Ⅲ Access数据库的压缩与修复
Access数据库长时间使用后容易出现数据库过大、数据库损坏等现像,微软的Office软件中Access是带有修复和压缩功能的,具体操作共分为二步方法如下:
1、打开您的.mdb数据库
2、点击上方菜单栏中的工具——》数据库实用工具——》点击压缩和修复数据库即可
压缩和修复Access数据库操作起来比较容易,在操作前您本地电脑上需要安装Office软件中的Access软件。
Ⅳ 如何压缩Mysql数据库
压缩表从名字上来看,简单理解为压缩后的表,也就是把原始表根据一定的压缩算法按照一定的压缩比率压缩后生成的表。
1.1 压缩能力强的产品
表压缩后从磁盘占用上看要比原始表要小很多。如果你熟悉列式数据库,那对这个概念一定不陌生。比如,基于 PostgreSQL 的列式数据库 Greenplum;早期基于 MySQL 的列式数据库 inforbright;或者 Percona 的产品 tokudb 等,都是有压缩能力非常强的数据库产品。
1.2 为什么要用压缩表?
情景一:磁盘大小为 1T,不算其他的空间占用,只能存放 10 张 100G 大小的表。如果这些表以一定的比率压缩后,比如每张表从 100G 压缩到 10G,那同样的磁盘可以存放 100 张表,表的容量是原来的 10 倍。情景二:默认 MySQL 页大小 16K,而 OS 文件系统一般块大小为 4K,所以在 MySQL 在刷脏页的过程中,有一定的概率出现页没写全而导致数据坏掉的情形。比如 16K 的页写了 12K,剩下 4K 没写成功,导致 MySQL 页数据损坏。这个时候就算通过 Redo Log 也恢复不了,因为几乎有所有的关系数据库采用的 Redo Log 都记录了数据页的偏移量,此时就算通过 Redo Log 恢复后,数据也是错误的。所以 MySQL 在刷脏数据之前,会把这部分数据先写入共享表空间里的 DOUBLE WRITE BUFFER 区域来避免这种异常。此时如果 MySQL 采用压缩表,并且每张表页大小和磁盘块大小一致,比如也是 4K,那 DOUBLE WRITE BUFFER 就可以不需要,这部分开销就可以规避掉了。查看文件系统的块大小:
root@ytt-pc:/home/ytt#tune2fs-l/dev/mapper/ytt--pc--vg-root|grep-i'blocksize'Block size: 4096
- 1.3 压缩表的优势
- 1.4 压缩表的缺陷
- 1.5 MySQL 支持的压缩算法
压缩表的优点非常明显,占用磁盘空间小!由于占用空间小,从磁盘置换到内存以及之后经过网络传输都非常节省资源。
简单来讲:节省磁盘 IO,减少网络 IO。
当然压缩表也有缺点,压缩表的写入(INSERT,UPDATE,DELETE)比普通表要消耗更多的 CPU 资源。
压缩表的写入涉及到解压数据,更新数据,再压缩数据,比普通表多了解压和再压缩两个步骤,压缩和解压缩需要消耗一定的 CPU 资源。所以需要选择一个比较优化的压缩算法。
这块是 MySQL 所有涉及到压缩的基础,不仅仅用于压缩表,也用于其它地方。比如客户端请求到 MySQL 服务端的数据压缩;主从之间的压缩传输;利用克隆插件来复制数据库操作的压缩传输等等。
从下面结果可以看到 MySQL 支持的压缩算法为 zlib 和 zstd,MySQL 默认压缩算法为 zlib,当然你也可以选择非 zlib 算法,比如 zstd。至于哪种压缩算法最优,暂时没办法简单量化,依赖表中的数据分布或者业务请求。
Ⅳ mdb文件太大了,想弄小一点的.有什么方法
mdb文件太大了,想弄小一点的。有什么方法.
有什么软件。或是方法可以弄小一点的。。
MDB数据库的冗余是很大的。。
你可以使用access打开数据库,选择 工具 -> 数据库实用工具 -> 压缩和修复数据库,一般可以使MDB的数据库减小很多的。
追问:
太NB了,,就你了。。。9M压完了,,不到1M哈哈`~`
打开 压缩一下
压缩MDB文件 >在Access97里, 我们可以开一个资料库后, 利用工具-->资料库公用程式
>来压缩此一资料库,
>可是在压缩时, Access会先将此资料库"关闭", 再进行压缩,
>然后再开启压缩后的资料库,
>那么我该如何在表单的这个按钮做呢??
>因为DBGird这个物件仍和资料库做联结, 所以我无法"关闭"此一资料库...
Data1.Recordset.Close
Data1.Database.Close
DBEngine.CompactDatabase "SourceDatabase", "TargetDatabase"
!!!你平常在 Dao 伫怎么用 Database 和 Recordset ,就怎么用 Data.Database 和
Data.Recrodset!!!
mdb其实不大,可是我每次做数据库的操作,用几次就很大了,你可以把里面的表都导出到另一个mdb里面就小了
个人不推荐用mdb因为每次数据库有更改都要重新上传,除非非常好的sql功底可以直接写表,不然有什么表的结构都要重新上传了
如果你是使用像ASP之类的做网页的话,还可以自己编写程序去进行压缩和修复,这样就免去了每次的下载和上传数据库的过程。定期对MDB进行压缩修复也是一种变现的对数据库的维护吧~
Ⅵ sqlserver2000数据库文件mdf已经达到70g了,怎么压缩
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令来压缩数据库。
其中DBCC SHRINKDATABASE 命令对数据库进行压缩,DBCC SHRINKFILE 命令对数据库中指定的文件进行压缩。
DBCC SHRINKDATABASE 命令语法如下:
Ⅶ sqlserver如何压缩数据文件空间
在程序组中,展开“Sqlserver”运行“查询分析器”。输入用户名、密码。
Ⅷ MS SQL2000数据库太大了 如何压缩
具体方法有3种。
方法一:
第一步:
backup log database_name with no_log
或者 backup log database_name with truncate_only
-- no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。
第二步:
1.收缩特定数据库的所有数据和日志文件,执行:
dbcc shrinkdatabase (database_name,[,target_percent])
-- database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。
2.收缩一次一个特定数据库中的数据或日志文件,执行
dbcc shrinkfile(file_id,[,target_size])
-- file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.
方法二:
第一步:
先备份整个数据库以备不测 。
第二步:
备份结束后,在Query Analyzer中执行如下的语句:
exec sp_detach_db yourDBName,true
--卸除这个DB在MSSQL中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在Query Analyzer中执行如下的语句:
exec sp_attach_single_file_db yourDBName,'
d:\mssql\data\yourDBName_data.mdf '
--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。
方法三:
1. 进入企业管理器,选中数据库,比如demo
2. 所有任务->分离数据库
3. 到数据库文件的存放目录,将MuOnline_log.LDF文件删除,以防万一,你可以拷出去
4. 企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
5. 记得数据库重新附加后用户要重新设置一下。
如果以后,不想要它变大:
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter database 数据库名 set recovery simple
Ⅸ 数据压缩技术分为哪两类使用方法是什么
【导读】数据压缩技术是大数据传输过程中需要采用的一种数据存储方法。那么数据压缩技术分为哪两类?使用方法是什么呢?为此小编今天就来和大家细细聊聊关于数据压缩技术那些事,同时也提醒各位大数据工程师在使用数据压缩过程中的一些注意事项及使用方法。
在数据压缩中,通过使用比原始数据更少的位来对数据进行编码,数据压缩有两种方法:无损压缩,它消除了冗余但不丢失任何原始数据;有损数据压缩,可通过删除不必要或不太重要的信息来修改数据,在大数据的传输和存储中使用数据压缩非常重要,因为它减少了IT部门必须为该数据提供的网络带宽和存储量,同样重要的是,您实际上并不想保留某些类型的大数据,例如作为物联网(IoT)通信数据一部分的设备间握手引起的抖动。
为了最大程度地利用大数据进行数据压缩,您必须知道何时何地使用不同类型的数据压缩工具和公式。选择数据压缩方法时,请牢记以下几条有用的准则:
何时使用无损数据压缩
如果您有一个大数据应用程序,并且无法承受丢失任何数据的麻烦,并且需要解压缩压缩的每个字节的数据,那么您将需要一种无损的数据压缩方法,当您压缩来自数据库的数据时,即使您意味着必须存储更多的数据,也希望进行无损数据压缩。在选择将此数据重新提交到其数据库时,您需要解压缩完整数据,以便它可以与数据库端的数据匹配并进行存储。
何时使用有损数据压缩
有时您不需要或不需要所有数据,例如物联网和网络设备的抖动,您不需要这些数据,只需提供给您业务所需的上下文信息的数据即可。第二个示例是在数据压缩过程的前端可能使用的数据压缩公式中使用人工智能(AI),如果您正在研究一个特定的问题,并且只希望与该问题直接相关的数据,则可以决定让数据压缩公式不包含与该问题无关的任何数据。
如何选择正确的编解码器
一个编解码器是一个硬件,软件的组合,压缩和解压缩数据,所以它在大数据压缩和解压缩操作的核心作用,编解码器有许多种,因此为正确的数据或文件类型选择正确的编解码器很重要,您选择的编解码器类型将取决于您尝试压缩的数据和文件类型,有无损和有损数据的编解码器,也有一些编解码器必须将所有数据文件作为“整体”处理,而其他编解码器可以将数据分割开,以便可以对其进行并行处理,然后在其目的地重新组合,某些编解码器设置用于可视数据,而其他编解码器仅处理音频数据。
为什么数据压缩很重要?
确定将用于大数据的数据压缩类型是大数据操作的重要组成部分,仅在资源端,IT人员就无法承受处理失控和迅速发展的存储的成本,即使必须完整存储数据,也应尽可能地对其进行压缩,也就是说,您可以采取其他步骤来限制存储和处理,以及针对大数据压缩中采用的算法和方法的最适合操作,掌握这些选项是IT部门的关键数据点。
以上就是小编今天给大家整理分享关于“数据压缩技术分为哪两类?使用方法是什么?”的相关内容希望对大家有所帮助。小编认为要想在大数据行业有所建树,需要考取部分含金量高的数据分析师证书,这样更有核心竞争力与竞争资本。
Ⅹ 怎样把数据库的日志文件压缩
具体方法有3种。
方法一:
第一步:
backup log database_name with no_log
或者 backup log database_name with truncate_only
-- no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。
第二步:
1.收缩特定数据库的所有数据和日志文件,执行:
dbcc shrinkdatabase (database_name,[,target_percent])
-- database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。
2.收缩一次一个特定数据库中的数据或日志文件,执行
dbcc shrinkfile(file_id,[,target_size])
-- file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.