SQL Server是以页存放数据的,有以下麻烦指教,谢谢!
1.怎样查询一个表中的数据是从哪一页开始存放的,及该表数据占用了多多少页(8K为页)?
2.怎样知道表中的数据页与索引页各页为多少页?
3.DBCC traceon的是做什么用的?
4.DBCC page可以查到表中哪些信息?谢谢!
1.怎样查询一个表中的数据是从哪一页开始存放的,及该表数据占用了多多少页(8K为页)?
2.怎样知道表中的数据页与索引页各页为多少页?
3.DBCC traceon的是做什么用的?
4.DBCC page可以查到表中哪些信息?谢谢!
DBCC TRACEON(2588)
dbcc help('ind')
DBCC IND(CSDN, a, 0)exec sp_spaceused A --不精确
DBCC SHOWCONTIG(a) --精确 SELECT --精确
o.name,
reserved_page_count = SUM(p.reserved_page_count),
used_page_count=SUM(p.used_page_count),
DataPages=SUM(
CASE WHEN (p.index_id < 2) THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
ELSE p.lob_used_page_count + p.row_overflow_used_page_count END
),
Rowcounts = SUM(
CASE WHEN (p.index_id < 2) THEN row_count ELSE 0 END
)
FROM sys.dm_db_partition_stats p
INNER JOIN sys.objects o
ON p.object_id = o.object_id
GROUP BY o.name--3.开始跟踪标记,只有打开标记,SQL SERVER才能输出某些信息.相当于开关。
--4.可以查看到某一个PAGE页上的所有信息,页头,数据行(含数据),插槽等。
细节参考这本书中相关章节:http://item.jd.com/11037616.html
-- 1.怎样查询一个表中的数据是从哪一页开始存放的,及该表数据占用了多多少页(8K为页)?
-- 2.怎样知道表中的数据页与索引页各页为多少页?
dbcc ind('[数据库名]','[表名]',-1)
--> 返回结果,PagePID即为页编号,行数即为总页数.-- 3.DBCC traceon的是做什么用的?
--> 启用指定的跟踪标记.