24-SQLServer存储空间的分配和使用情况
一、总结
1、SQLServer中的数据库有的时候会有多个数据文件组或者多个数据文件的情况,该博客就是讨论当有多个数据文件时,表的数据会怎么存储,存储在哪些数据文件中。
2、首先SQLServer中的数据文件主要是用来存储表和索引的数据的。
3、SQLServer的最小存储单位是页,每页8KB,8个页组成一个区。
4、区分为混合区和统一区2类,表或索引的前8个数据页都在混合区中分配,当空间超过8个数据页时,就开始给其分配统一区。
5、新创建的空表不会对其分配区,当有数据插入时才会分配区,可以使用dbcc extentinfo命令来查看表被分配区的情况。
6、SQLServer的表数据会在多个数据文件上分布,官方说法:文件组对组内的所有文件都使用按比例填充策略。所以数据写入文件时,数据库引擎会根据文件中的可用空间量按一定比例将数据写入每个文件中,而不是将所以数据先写满第一个文件,再写下一个。比如当第一个文件当前的空间写满时,不会先扩展这个文件,而是去写下一个文件(或者扩展),直到所有的文件都写一遍之后,才会轮到扩展第一个文件。
7、对表做delete操作时,表分配的空间不会释放,但是数据文件的可用百分比会增加,下次再次插入数据时,会优先把这些空间写满。
8、对表做truncate操作时,会释放表占用的空间。
二、操作步骤
1、查看所有的文件
select * from run.sys.sysfiles
2、查看对象分配的区
dbcc extentinfo(run,T3)
字段含义:
file_id:数据库的数据文件的编号
page_id:在某个盘区中的第一个页面的页面号
pg_alloc:该盘区分配的页面的数量(大于等于1,小于等于8)
ext_size:盘区的大小,以页面为单位
object_id:数据库对象的ID
index_id:表示数据对象的类型
注:可以根据上面查出的file_id定位到具体的数据文件
最新文章
- javascript数组去重的4个方法
- BZOJ3393:[USACO LPHONE] 激光通讯
- MYTOP安装和使用
- javascript作用域和作用域链摘录
- 学习python之练习(二)
- 配置SQL Server去使用 Windows的 Large-Page/Huge-Page allocations
- poj 2524 并查集 Ubiquitous Religions
- 微软职位内部推荐-SW Engineer II for Cloud Servi
- POJ 1905-Expanding Rods(二分法+计算几何)
- 四 APPIUM GUI讲解(Windows版)
- c语言中的转义序列
- python静态方法和类方法
- cnetos 7 mariadb 集群报错分析解答
- idea 无效的源发行版: 8解决方法
- TextView字体,行距,html格式,超链接,最大长度的设定
- C#中委托、事件和回调函数的理解
- Thinkphp 模板中使用自定义函数的方法
- L1正则化和L2正则化
- SNMP学习笔记之SNMP的安装及Python的调用
- make and make bzImage
热门文章
- 日常工作问题解决:rhel7下配置多路径设备
- 图解JS
- AirFlow后台运行调度程序
- [NOIP普及组2011]装箱问题
- LeetCode. 3的幂
- windows自动化测试 (python)
- nginx设置导航&;安装showdoc&;创建文件服务&;zabbix&;grafana
- scratch少儿编程第一季——07、人要衣装佛靠金装——外观模块
- shell习题第21题:计算数字的个数
- 自动化测试之if __name__ == '__main__'未运行