成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

創(chuàng)建輔助表

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

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

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

執(zhí)行動(dòng)態(tài)語(yǔ)句

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

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

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

select Name from sysobjects where xtype'u'

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

Insert AddTable select Name from sysobjects where xtype'u'

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

標(biāo)簽: