国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

實現(xiàn)批量查詢數(shù)據(jù)庫表所占空間

當(dāng)進行大數(shù)據(jù)量操作時,我們經(jīng)常想要知道數(shù)據(jù)庫中哪些表的邏輯操作次數(shù)最多,以及所有表所占用的空間大小。這樣可以有針對性地應(yīng)對表數(shù)據(jù)量過大給內(nèi)存增加的負(fù)擔(dān)。對于單個表來說,查詢其占用空間大小是很簡單的。但

當(dāng)進行大數(shù)據(jù)量操作時,我們經(jīng)常想要知道數(shù)據(jù)庫中哪些表的邏輯操作次數(shù)最多,以及所有表所占用的空間大小。這樣可以有針對性地應(yīng)對表數(shù)據(jù)量過大給內(nèi)存增加的負(fù)擔(dān)。對于單個表來說,查詢其占用空間大小是很簡單的。但是如果數(shù)據(jù)庫中有幾十甚至幾百個表時,使用單表操作語句顯然不夠?qū)嶋H。接下來,我將介紹一種批量查詢數(shù)據(jù)庫表所占空間大小的方法。

創(chuàng)建輔助表

首先,在要批量查詢的數(shù)據(jù)庫中新建一個表,主要用于收集本數(shù)據(jù)庫中所有表的表名。通過一個INSERT觸發(fā)器,每次向表中添加表名,都會觸發(fā)該觸發(fā)器,從而直接顯示出這個表名所對應(yīng)的表所占空間大小。

創(chuàng)建觸發(fā)器

我們需要為輔助表AddTable創(chuàng)建一個觸發(fā)器。這個觸發(fā)器的構(gòu)造稍顯復(fù)雜,但希望能對新手有所幫助。首先,我們創(chuàng)建了一個名為mytrigger的觸發(fā)器,作用在AddTable表上。after insert表示觸發(fā)器在執(zhí)行添加語句之后觸發(fā)。

執(zhí)行動態(tài)語句

接下來,我們使用EXECUTE執(zhí)行動態(tài)語句。這里的“exec sp_spaceused [表名]”是常用的查詢單個表所占空間大小的語句。為了將表名傳遞給該語句,我們定義一個varchar類型的SQL參數(shù),大小為max,并將其初始化為空字符。在EXECUTE語句中,我們可以通過將表名替換為 TableName來動態(tài)地執(zhí)行查詢。

添加操作并觸發(fā)觸發(fā)器

觸發(fā)器創(chuàng)建完畢后,我們只需對AddTable表進行添加操作,以觸發(fā)它。根據(jù)之前的需求,我們先查詢出數(shù)據(jù)庫中所有表的表名,然后將它們添加到AddTable表中。首先,我們可以使用以下語句查詢數(shù)據(jù)庫中所有的表名:

select Name from sysobjects where xtype'u'

接下來,執(zhí)行以下語句添加表名:

Insert AddTable select Name from sysobjects where xtype'u'

執(zhí)行后,我們會發(fā)現(xiàn),在數(shù)據(jù)庫進行邏輯添加的過程中,對應(yīng)表的數(shù)據(jù)也會被顯示出來。

標(biāo)簽: