MYSQL数据库的物理设计都包括哪些内容,怎么设计?

如题所述

Log File物理结构

从 ib_logfile0和 ib_logfile1这两个文件的物理结构可以看出,在Log Header部分还是有些许差异的, ib_logfile0会多一些额外的信息,主要是checkpoint信息。

并且每个Block的单位是512字节,对应到磁盘每个扇区也是512字节,因此redo log写磁盘是原子写,保证能够写成功,而不像index page一样需要double write来保证安全写入。

我们依次从上到下来看每个Block的结构

Log File Header Block

    Log Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节

    Start LSN,这个redo log文件开始日志的lsn,占用8字节

    Log File Number,总是为0,占用4字节

    Created By,备份程序所占用的字节数,占用32字节

    另外在ib_logfile0中会有两个checkpoint block,分别是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,两个记录InnoDB Checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,并且只在每组log的第一个文件中存在,组内其他文件虽然没有checkpoint相关信息,但是也会预留相应的空间出来。这里为什么有两个checkpoint的呢?原因是设计为交替写入,避免因为介质失败而导致无法找到可用的checkpoint的情况。

    Log blocks

    请点击输入图片描述

    log block结构分为日志头段、日志记录、日志尾部

    Block Header,占用12字节

    Data部分

    Block tailer,占用4字节

    Block Header

    这个部分是每个Block的头部,主要记录的块的信息

    Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节

    Block data len,表示该block中有多少字节已经被使用了,占用2字节

    First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节

    Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
你想设计什么样的数据库啊?..可以简单的说明一下吗?..

设计数据库步骤:概念模型,逻辑模型,物理模型.
概念模型:用户需求和运行需求的一个高级表示.
逻辑模型:用于捕捉结构化数据的软件模型的详细表示.
物理模型:数据库的所有表和列的详细规范.

一,在概念上设计一个数据库(概念模型)
需求:实体,属性,关系.
软件:Microsoft Office Visio for Enterprise Anchitects
步骤:启用软件,创建实体,添加属性,添加关系

二,在逻辑上设计一个数据库来利用关系引擎
需求:表,列,外键.
软件:同上
在概念模型的基础上创建.

三,物理创建数据库.
1,打开SQL Server Management Studio
2,右击数据库-新建数据库.
架构:数据库-安全性(右击)-新建-架构
架构是用于简化数据库对象管理的一种命名空间.
创建表来实现:数据库-(右击)表-新建表;
设置主键:右击想要设置成主键的项-设置主键
CHECK约束:右击想要约束的项-CHECK约束-添加-表达式

数值属性:
1,整数和数量:
bit(0_1) tiyint(0_255) smallint(-32768_32767) int(-2147483648_2147483647) bigint(...)
2,精确数据:
decimal(精度9,小数位数0-5) numeric(19,0-9) dec(28/38 0-13/0-17) money(18,4) smallmoney(9,4)
3,科学与工程数据:
float(存储空间4/8,小数位数1-24/25-53) real(4,24) double(8,53)
4,字符串属性:
长度固定:char nchar
长度可变:varchar nvarchar
5,日期与时间属性:
datetime和smalldatetime

2005提供的约束:
NO NTULL:必需填的属性.
CREATE TABLE EM(
EMNumber INT NOT NULL
)

DEFAULT:插入一行的时候,如果没有为一个列指定值,就会自动使用DEFAULT值.

PRIMARY KEY:定义主键.
CREATE TABLE EM(
EMNumber INT NOT NULL
PRIMARY KEY(EMNumber,..)
)

UNIQUE:约束一个值,使它不在表中重复.
CREATE TABLE EM(
EMNumber INT NOT NULL
UNIQUE(EMNumber,..)
)

CHECK:限制列的取值范围和模式.
CREATE TABLE EM(
EMNumber INT NOT NULL
CHECK(EMNumber>0)
)

FOREIGN KEY:将一个列表中的值限制为可以在另一个列表中发现的值.
CREATE TABLE EM(
EMNumber INT NOT NULL
FOREING KEY(EMNumber,..)
)

注:使用时最好都使用代码来操作,并少用中文.
如果是MySQL里面设计的话..很简单..一句话..
create datebase [数据库名];
创建表:
create table [表名](
[表属性] [属性类型]
);
如:
//创建数据库
create datebase school;
//创建表
create table student(
no int primary key,
name varchar(10) not null
);

至于表属性的类型,你可以在网上找API文档..本回答被提问者和网友采纳
相似回答