SQL执行exec sp_spaceused看到的保留空间和未分配空间是什么?

时间:2022-01-31 05:24:18
执行exec sp_spaceused后看到database_size:        这个是数据库的占用空间unallocated space  未分配的空间reserved:          这个是为数据库保留的总空间(这个保留空间指的是什么?)data:               这个是数据库各数据表所有记录的空间index_size:        这个是数据库各数据表所有索引的空间unused:3             未用的空间量

11 个解决方案

#1


保留空间,难道不是为了数据文件的数据增加和日志文件日志增加预留的嘛,我的理解很肤浅 SQL执行exec sp_spaceused看到的保留空间和未分配空间是什么?

#2


http://technet.microsoft.com/en-us/library/ms188776.aspx

#4


由数据对象分配的空间是什么意思?有的怎么说是保留空间?还是不是很明白?

#5


比如你创建一个表,然后插入数据,就需要为这个表(对象的一种)分配空间

#6


每次分配不会只分配刚好的大小,以区为单元分配,所以如果你刚好超过一个区然后还要一点点空间,就会再次分配一个新区(8个页),可以理解为这个新区的7.xx个部分都是保留,不知道我的理解是否正确

#7


就和结构体分配内存一样,保留就是你指的8个页,unused就是多分配出的一点没用到的空间,是这样子理解吗?那上面的unallocated space  未分配的空间是指什么呢?

#8


一个库本来就有特定的大小,这些在创建时会预先分配,但是未用的时候,就算未分配空间

#9


引用 7 楼 jbqiu168 的回复:
就和结构体分配内存一样,保留就是你指的8个页,unused就是多分配出的一点没用到的空间,是这样子理解吗?那上面的unallocated space  未分配的空间是指什么呢?


因为数据库是存储在文件中的,所以unallocated space  未分配的空间,就是文件中空闲的空间,比如一个文件100m,那么可能还有20m的空闲空间。

unused是指已经分配出去的空间,比如新建了一个表,插入了一堆数据,那么sql server肯定要一部分空间分配给某个表,比如新建了xx表,插入了100条数据,那么系统就需要给他分配空间,比如分配了10m,但是没有全部用完,所以unused就是分配了,还没有用的

#10


我的理解也很肤浅,就是“站着茅厕不拉屎”,但是这种“站着茅厕”是有道理的,免得想拉屎的时候,再去找茅厕,一来费时,而来影响效率,我自己感觉是起到一个缓冲作用,
其实跟计算机内存一样,个人PC正常办公,用满4G内存的时候很少,但是还是配置了4G的内存

#11


引用 10 楼 x_wy46 的回复:
我的理解也很肤浅,就是“站着茅厕不拉屎”,但是这种“站着茅厕”是有道理的,免得想拉屎的时候,再去找茅厕,一来费时,而来影响效率,我自己感觉是起到一个缓冲作用,
其实跟计算机内存一样,个人PC正常办公,用满4G内存的时候很少,但是还是配置了4G的内存
肤浅的东西容易让人理解!呵呵!谢谢大家了,我基本明白了

#1


保留空间,难道不是为了数据文件的数据增加和日志文件日志增加预留的嘛,我的理解很肤浅 SQL执行exec sp_spaceused看到的保留空间和未分配空间是什么?

#2


http://technet.microsoft.com/en-us/library/ms188776.aspx

#3


#4


由数据对象分配的空间是什么意思?有的怎么说是保留空间?还是不是很明白?

#5


比如你创建一个表,然后插入数据,就需要为这个表(对象的一种)分配空间

#6


每次分配不会只分配刚好的大小,以区为单元分配,所以如果你刚好超过一个区然后还要一点点空间,就会再次分配一个新区(8个页),可以理解为这个新区的7.xx个部分都是保留,不知道我的理解是否正确

#7


就和结构体分配内存一样,保留就是你指的8个页,unused就是多分配出的一点没用到的空间,是这样子理解吗?那上面的unallocated space  未分配的空间是指什么呢?

#8


一个库本来就有特定的大小,这些在创建时会预先分配,但是未用的时候,就算未分配空间

#9


引用 7 楼 jbqiu168 的回复:
就和结构体分配内存一样,保留就是你指的8个页,unused就是多分配出的一点没用到的空间,是这样子理解吗?那上面的unallocated space  未分配的空间是指什么呢?


因为数据库是存储在文件中的,所以unallocated space  未分配的空间,就是文件中空闲的空间,比如一个文件100m,那么可能还有20m的空闲空间。

unused是指已经分配出去的空间,比如新建了一个表,插入了一堆数据,那么sql server肯定要一部分空间分配给某个表,比如新建了xx表,插入了100条数据,那么系统就需要给他分配空间,比如分配了10m,但是没有全部用完,所以unused就是分配了,还没有用的

#10


我的理解也很肤浅,就是“站着茅厕不拉屎”,但是这种“站着茅厕”是有道理的,免得想拉屎的时候,再去找茅厕,一来费时,而来影响效率,我自己感觉是起到一个缓冲作用,
其实跟计算机内存一样,个人PC正常办公,用满4G内存的时候很少,但是还是配置了4G的内存

#11


引用 10 楼 x_wy46 的回复:
我的理解也很肤浅,就是“站着茅厕不拉屎”,但是这种“站着茅厕”是有道理的,免得想拉屎的时候,再去找茅厕,一来费时,而来影响效率,我自己感觉是起到一个缓冲作用,
其实跟计算机内存一样,个人PC正常办公,用满4G内存的时候很少,但是还是配置了4G的内存
肤浅的东西容易让人理解!呵呵!谢谢大家了,我基本明白了