資料庫文件壓縮
資料庫在使用一段時間後,時常會出現因數據刪除而造成資料庫中空閑空間太多的情況,這時就需要減少分配給資料庫文件和事務日誌文件的磁碟空間,以免浪費磁碟空間。當資料庫中沒有數據時,可以修改資料庫文件屬性直接改變其佔用空間,但當資料庫中有數據時,這樣做會破壞資料庫中的數據,因此需要使用壓縮的方式來縮減資料庫空間。可以在資料庫屬性選項中選擇「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,具體意思查看聯機幫助.