日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

delphi mysql 删除_Delphi如何清空日志文件

發(fā)布時間:2023/12/16 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi mysql 删除_Delphi如何清空日志文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Delphi如何清空日志文件?

問題的引出:我們在數(shù)據(jù)庫切割過程中,就是將單據(jù)數(shù)據(jù)中某個日期以前的數(shù)據(jù)先復(fù)制到新的數(shù)據(jù)庫中(select ... into ...),然后再將原來數(shù)據(jù)庫中的這些數(shù)據(jù)刪除。這樣操作在數(shù)量很大的數(shù)據(jù)庫上時,其日志文件的增長也是驚人的。我復(fù)制一個48萬條記錄的表時,***發(fā)現(xiàn)僅這一個表的操作就使新數(shù)據(jù)庫的日志文件增加了170MB,如果不加清理,那就會被日志文件占用大量寶貴的磁盤空間。況且,我們轉(zhuǎn)移到的新建數(shù)據(jù)庫的作用也只是用來查詢,以后不會有任何Insert、Update、Delete操作的,要這些日志文件沒有什么用處,因此必須在向它轉(zhuǎn)移數(shù)據(jù)的過程中做一些縮小日志文件的處理,怎么辦??問題由此而生...

1. 處理過程中不記錄日志

設(shè)置方法如下:企業(yè)管理器中打開對應(yīng)數(shù)據(jù)庫的“屬性”,頁框“選項”中將“模型”改為“簡單”。這樣設(shè)置的結(jié)果是對此數(shù)據(jù)庫的任何操作都將不記錄事務(wù)日志。對應(yīng)的SQL為:EXEC sp_dboption @pdbName, 'trunc. log on chkpt.', 'TRUE'

但是,我們經(jīng)過測試發(fā)現(xiàn):啟用此功能后,我們在對這個數(shù)據(jù)庫操作時,就不能用事務(wù)操作了,程序執(zhí)行到BeginTranSaction時就報錯,不能執(zhí)行下去,由于我們不能在對此庫的操作中保證100%的正確性,因此我們還需要事務(wù),因此這種方法適用空間有限,也不能滿足我們程序的需求。

我們還得繼續(xù)查找…

2. 處理過程中允許記錄日志,但要對日志文件進行處理,時時縮小它。

SQL Server的聯(lián)機幫助告訴我們:

在下列情況下,日志文件的物理大小將減少:

執(zhí)行 DBCC SHRINKDATABASE 語句時。

執(zhí)行引用日志文件的 DBCC SHRINKFILE 語句時。

自動收縮操作發(fā)生時。

下面我們逐個分析這三個方案:

① DBCC SHRINKDATABASE:收縮特定數(shù)據(jù)庫的所有數(shù)據(jù)和日志文件,包含我們的需求,但也大于我們的需求。此方案可用,但不要著急,給人的感覺是買了一件能穿的衣服,但尺寸大了些,穿在身上有點不舒服,我們接著分析以下兩個方案。

② DBCC SHRINKFILE:收縮相關(guān)數(shù)據(jù)庫的指定數(shù)據(jù)文件或日志文件大小。與方案1的區(qū)別僅一字之差:“和”與“或”,相當(dāng)于把方案1拆成兩步來執(zhí)行,我們需要的就是收縮日志文件。因此,它對我們來說顯得比較合適,有點量體裁衣的感覺。但還有沒有更好的呢,我們來看第三個方案。

③自動收縮:數(shù)據(jù)庫也可設(shè)置為按給定的時間間隔自動收縮,服務(wù)器定期檢查每個數(shù)據(jù)庫中的空間使用情況。如果發(fā)現(xiàn)數(shù)據(jù)庫中有大量閑置空間,而且它的 autoshrink 選項設(shè)置為 true,SQL Server 就縮小該數(shù)據(jù)庫中的文件大小。它是周期性的執(zhí)行DBCC SHRINKDATABASE,既然方案1已經(jīng)是一件尺寸大了一些的衣服,則此方案就相當(dāng)于又穿上了N件大尺寸衣服,一件就已經(jīng)夠了,我還要那么多干嘛呢?

綜合對比發(fā)現(xiàn),方案2正是我們需要的。DBCC?SHRINKFILE?('+Trim(edDBMC.Text)+'_Log,?TRUNCATEONLY)

經(jīng)過這個語句處理以后,日志文件將回到它的最小狀態(tài)504KB,任何的日志記錄都將清空。

再結(jié)合我們的工具,復(fù)制完一個表之后,我們就執(zhí)行方案2,處理過程中日志文件暫時占用的***空間也就是處理***數(shù)據(jù)表時產(chǎn)生的日志空間,但***都將清空,顯示為500多KB,相對于龐大的數(shù)據(jù)文件而言,微之戡微。

【編輯推薦】

【責(zé)任編輯:鄭添龍 TEL:(010)68476606】

點贊 0

總結(jié)

以上是生活随笔為你收集整理的delphi mysql 删除_Delphi如何清空日志文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。