我在sql server 索引基础知识系列中,第一篇就讲了记录数据的基本格式。那里主要讲解的是,数据库的最小读存单元:数据页。一个数据页是8k大小。
对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。而是变化达到一定数量级后才会作这个操作。 这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。
区是管理空间的基本单位。一个区是八个物理上连续的页(即 64 kb)。这意味着 sql server 数据库中每 mb 有 16 个区。
为了使空间分配更有效,sql server 不会将所有区分配给包含少量数据的表。sql server 有两种类型的区:
统一区,由单个对象所有。区中的所有 8 页只能由所属对象使用。
混合区,最多可由八个对象共享。区中八页的每页可由不同的对象所有。
通常从混合区向新表或索引分配页。当表或索引增长到 8 页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成 8 页,则对该索引的所有分配都使用统一区进行。
为何会这样呢?
其实很简单:
读或写 8kb 的时间与读或写 64 kb的时间几乎相同。
在 8 kb 到 64 kb 范围之内,单个磁盘 i/o 传输操作所花的时间主要是磁盘取数臂和读/写磁头运动的时间。
因此,从数学上来讲,当需要传输 64 kb 以上的 sql 数据时,尽可能地执行 64 kb 磁盘传输是有益的,即分成数个64k的操作。
因为 64 kb 传输基本上与 8 kb 传输一样快,而每次传输的 sql server 数据是 8 kb 传输的 8 倍。
我们通过一个实例来看有and 操作符时候的最常见的一种情况。我们有下面一个表,create table [dbo].[member]( member_no] [dbo].
[numeric_id] identity(1,1) not null, [lastname] [dbo].[shortstring] not null, [firstname] [dbo].[shortstring] not null, [middleinitial] [dbo].
[letter] null, [street] [dbo].[shortstring] not null, [city] [dbo].[shortstring] not null, [state_prov] [dbo].
[statecode] not null, [country] [dbo].[countrycode] not null, [mail_code] [dbo].[mailcode] not null, [phone_no] [dbo].
[phonenumber] null, [photograph] [image] null, [issue_dt] [datetime] not null default (getdate())expr_dt] [datetime] not null default (dateadd(year,1,getdate())region_no] [dbo].[numeric_id] not null, [corp_no] [dbo].[numeric_id] null, [prev_balance] [money] null default (0), curr_balance] [money] null default (0), member_code] [dbo].
[status_code] not null default ('
数据库实验心得体会
有关于数据库实验的心得体会,总的来说,受益匪浅。在这些天中,我们学到了很多东西,包括建表,导入数据,查询,插入。最重要的是我们有机会用电脑自己进行实践,没接触的时候总是觉得它比较深奥或是不可接近的新型语言,尽管自己对c语言非常感兴趣,但还是有些心理上的陌生感。学习数据库就和我们平时的其它科目学习一样...
数据库实验心得体会
篇一 数据库实验心得体会 数据库实验心得体会。当老师在最后说这个课程结束了,回顾一下以前老师给我们讲过的东西,真的有很多是我们应该去注意的。学习完sql sever数据库后感觉可分两大块,一块是开发,一块是管理。开发主要是写写存储过程 触发器什么的,还有就是用oracle的develop工具做for...
数据库实习心得体会
3 数据库设计 数据分析 系统开发维护和管理工作 4 设计备份与恢复策略并贯彻实施 设计数据库高可用性方案并。数据库实习心得体会1贯彻实施 5 设计数据库高可用性方案并贯彻实施 根据业务及应用开发需。时间一晃而过来公司x个月的时间,以快速了解xx银行实物资产求进行数据建模 开发较复杂的后台存储过程及...