sql資料庫空間大小
收縮資料庫
資料庫中的每個文件都可以通過刪除未使用的頁的方法來減小。盡管資料庫引擎會有效地重新使用空間,但某個文件多次出現無需原來大小的情況後,收縮文件就變得很有必要了。數據和事務日誌文件都可以減小(收縮)。可以成組或單獨地手動收縮資料庫文件,也可以設置資料庫,使其按照指定的間隔自動收縮。
文件始終從末尾開始收縮。例如,如果有個 5 GB 的文件,並且在 DBCC SHRINKFILE 語句中將 target_size 指定為 4 GB,則資料庫引擎將從文件的最後一個 1 GB 開始釋放盡可能多的空間。如果文件中被釋放的部分包含使用過的頁,則資料庫引擎先將這些頁重新放置到文件的保留部分。只能將資料庫收縮到沒有剩餘的可用空間為止。例如,如果某個 5 GB 的資料庫有 4 GB 的數據,並且在 DBCC SHRINKFILE 語句中將 target_size 指定為 3 GB,則只能釋放 1 GB。
自動資料庫收縮
將 AUTO_SHRINK 資料庫選項設置為 ON 後,資料庫引擎將自動收縮具有可用空間的資料庫。此選項可以使用 ALTER DATABASE 語句來進行設置。默認情況下,此選項設置為 OFF。資料庫引擎會定期檢查每個資料庫的空間使用情況。如果某個資料庫的 AUTO_SHRINK 選項設置為 ON,則資料庫引擎將減少資料庫中文件的大小。該活動在後台進行,並且不影響資料庫內的用戶活動。
將資料庫設置為自動收縮
ALTER DATABASE (Transact-SQL)
手動資料庫收縮
您可以使用 DBCC SHRINKDATABASE 語句或 DBCC SHRINKFILE 語句來手動收縮資料庫或資料庫中的文件。如果 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 語句無法回收日誌文件中的所有指定空間,則該語句將發出信息性消息,指明必須執行什麼操作以便釋放更多空間。有關收縮日誌文件的詳細信息,請參閱收縮事務日誌。
在該過程中任意時間都可停止 DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 操作,所有已完成工作都將保留。
在使用 DBCC SHRINKDATABASE 語句時,您無法將整個資料庫收縮得比其初始大小更小。因此,如果資料庫創建時的大小為 10 MB,後來增長到 100 MB,則該資料庫最小隻能收縮到 10 MB,即使已經刪除資料庫的所有數據也是如此。
但是,使用 DBCC SHRINKFILE 語句時,可以將各個資料庫文件收縮得比其初始大小更小。必須對每個文件分別進行收縮,而不能嘗試收縮整個資料庫
② sql怎麼獲得資料庫緩存空間大小
其實只要使用系統內置的存儲過程sp_spaceused就可以得到表的相關信息
如:sp_spaceused 'tablename'
以下是為了方便寫的一個存儲過程,目的是把當前的所有表的相關信息全部都保存在一個指定的表裡面
CREATE PROCEDURE get_tableinfo AS
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo --創建結果存儲表
(nameinfo varchar(50) ,
rowsinfo int , reserved varchar(20) ,
datainfo varchar(20) ,
index_size varchar(20) ,
unused varchar(20) )
delete from tablespaceinfo --清空數據表
declare @tablename varchar(255) --表名稱
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR
select o.name
from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
and o.name not like N'#%%' order by o.name
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',
N'@tbname varchar(255)',
@tbname = @tablename
FETCH NEXT FROM Info_cursor
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO執行存儲過程
exec get_tableinfo
查詢運行該存儲過程後得到的結果
select *
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
③ SQL server 2005 完全安裝要多大的空間
20MB左右. 可能是日誌文件及垃圾文件過多,你的系統用了很久了吧.可用windows的"磁碟清理"刪除不必要的文件,釋放空間.當然,用windows優化大師或超級兔子也可以了.如果還不行,乾脆重做一下系統吧. 另外,理論上SQL Server設計資料庫及資料庫表是不需要象ACCESS那樣需要設置資料庫的大小,用SQL Server做資料庫,資料庫及資料庫表的大小是跟你的硬碟空間有關,也就是說你資料庫在不斷增大,你安裝資料庫的文件夾也在增大,對應的盤符也在增大,你需要的硬碟空間也就越大,對內存一般要求不會很高,一般有128m的機子應該都沒問題,不過建議還是在256以上,資料庫內查找數據的速度,很大程度上取決與你的資料庫結構,以及你代碼中操作資料庫數據的合理性 回答:2006-04-08 19:46提問者對答案的評價:
④ mysql 資料庫可以有多大
MySQL 3.22 限制的表大小為4GB。由於在MySQL 3.23 中使用了MyISAM 存儲引擎,最大表尺寸增加到了65536TB(2567 – 1位元組)。由於允許的表尺寸更大,MySQL資料庫的最大有效表尺寸通常是由操作系統對文件大小的限制決定的,而不是由MySQL內部限制決定的。
InnoDB 存儲引擎將InnoDB 表保存在一個表空間內,該表空間可由數個文件創建。這樣,表的大小就能超過單獨文件的最大容量。表空間可包括原始磁碟分區,從而使得很大的表成為可能。表空間的最大容量為64TB。
(4)sql資料庫空間大小擴展閱讀
據D.V.B 團隊以及Cmshelp 團隊做CMS 系統評測時的結果來看,MySQL單表大約在2千萬條記錄(4G)下能夠良好運行,經過資料庫的優化後5千萬條記錄(10G)下運行良好。
這對於MySQL是不公平的,那些CMS廠商非但沒有把內核做好反而還在添加很多花哨的功能,最終導致其產品自身負載過低。
他們並沒有針對自身負載效果作出相應的資料庫優化方案及標准,而是繼續保留著復雜的結構造成對MySQL的資源無休止的浪費,最終導致了其負載上的缺陷。
於是他們便充分發揮中國人的傳統優勢——變通:避重就輕的採用了所謂的分表式存儲,雖然在一定程度上緩解了自身負載的缺陷,但是導致了網站後期維護以及資源上的浪費。
用一個不恰當的比喻來形容,MySQL中的的表就像一塊地,單表就相當於利用這塊地蓋高層建築充分利用達到高人員負載,但分表就相當於用這塊地蓋了一間平房。
如果為了達到高人員負載的話那就需要另開地皮達到目的,但是我們要思考,是地不夠,還是他的能力不夠,如此做法讓人感到資源的浪費以及規劃的嚴重缺陷。
⑤ SQL怎麼改變資料庫的大小用代碼
不能改小。
只能改大。
可以增加數據設備文件或者擴大已有設備文件的大小。
--初始化一個100m的設備test_dev
disk
init
name
='test_dev'',physname='c:\sybase\data\test_dev.dat',size='100m'
或者
--給設備test_dev擴大200m的空間
disk
resize
name='test_dev',size='200m'
為資料庫增加100m的空間
alter
database
test
on
test_dev='100m'
⑥ sql資料庫收縮6g空間需要多久
時間長短受很多因素影響。
根據資料庫的大小,如果資料庫很小,那麼收縮時間超快,否則的話,收縮超慢,也可能失敗。
還有其他因素,比如收縮的時候你的資料庫是否被訪問等等,收縮數據文件是單線程的操作,所以CPU再好也沒用,一般收縮的話都少量多次這樣操作。
注意如果1%的空間千萬不要收縮資料庫。收縮資料庫對資料庫的影響極大,產生大量日誌和碎片,而且會鎖表。
⑦ sql資料庫提示硬碟空間不足但是空間很大
DBCC CHECKDB('實際的資料庫名')執行看下有沒有錯誤。
SQL是高級的非過程化編輯語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的sql語言作為數據輸入與管理的介面。
⑧ 如何使用SQL語句查詢資料庫及表的空間容量
--1、查看錶空間的名稱及大小
select
t.tablespace_name,
round(sum(bytes/(1024*1024)),0)
ts_size
from
dba_tablespaces
t,
dba_data_files
d
where
t.tablespace_name
=
d.tablespace_name
group
by
t.tablespace_name;
--2、查看錶空間物理文件的名稱及大小
select
tablespace_name,
file_id,
file_name,
round(bytes/(1024*1024),0)
total_space
from
dba_data_files
order
by
tablespace_name;
3.查看所有表空間使用情況
select
b.file_id
文件ID號,
b.tablespace_name
表空間名,
b.bytes/1024/1024||'M'位元組數,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M'
已使用,
sum(nvl(a.bytes,0))/1024/1024||'M'
剩餘空間,
round(100
-
sum(nvl(a.bytes,0))/(b.bytes)*100,2)||
'%'
佔用百分比
from
dba_free_space
a,dba_data_files
b
where
a.file_id=b.file_id
group
by
b.tablespace_name,b.file_id,b.bytes
order
by
b.file_id;
總有一款適合你!
⑨ MySQL中查詢所有資料庫佔用磁碟空間大小和單個庫中所有表的大小的sql語句
查詢所有資料庫佔用磁碟空間大小的SQL語句:
復制代碼
代碼如下:
select
TABLE_SCHEMA,
concat(truncate(sum(data_length)/1024/1024,2),'
MB')
as
data_size,
concat(truncate(sum(index_length)/1024/1024,2),'MB')
as
index_size
from
information_schema.tables
group
by
TABLE_SCHEMA
order
by
data_length
desc;
查詢單個庫中所有表磁碟佔用大小的SQL語句:
復制代碼
代碼如下:
select
TABLE_NAME,
concat(truncate(data_length/1024/1024,2),'
MB')
as
data_size,
concat(truncate(index_length/1024/1024,2),'
MB')
as
index_size
from
information_schema.tables
where
TABLE_SCHEMA
=
'TestDB'
group
by
TABLE_NAME
order
by
data_length
desc;
以上語句測試有效,注意替換以上的TestDB為資料庫名
⑩ sql語言改資料庫空間大小
ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}