数据库实验工作报告总结多篇(4)

工作报告2018-10-11王华老师

----------------------------------------------------------------

create table student

(

sno char(9) primary key, /*sno是主码 列级完整性约束条件*/

sname char(10) unique, /*sname取唯一值*/

ssex char(2),

sage smallint, /*类型为smallint*/

sdept char(20) /*所在系*/

); /*;要加*/

-----------

数据库实验总结【二】

我在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 数据时,

相关推荐

猜你喜欢

大家正在看

换一换