㈠ 请问硬盘的物理存储结构是怎样的磁道\柱面\扇区是什么概念
硬盘的物理结构
1、磁头
硬盘内部结构磁头是硬盘中最昂贵的部件,也是硬盘技术中最重要和最关键的一环。传统的磁头是读写合一的电磁感应式磁头,但是,硬盘的读、写却是两种截然不同的操作,为此,这种二合一磁头在设计时必须要同时兼顾到读/写两种特性,从而造成了硬盘设计上的局限。而MR磁头(Magnetoresistive heads),即磁阻磁头,采用的是分离式的磁头结构:写入磁头仍采用传统的磁感应磁头(MR磁头不能进行写操作),读取磁头则采用新型的MR磁头,即所谓的感应写、磁阻读。这样,在设计时就可以针对两者的不同特性分别进行优化,以得到最好的读/写性能。另外,MR磁头是通过阻值变化而不是电流变化去感应信号幅度,因而对信号变化相当敏感,读取数据的准确性也相应提高。而且由于读取的信号幅度与磁道宽度无关,故磁道可以做得很窄,从而提高了盘片密度,达到200MB/英寸2,而使用传统的磁头只能达到20MB/英寸2,这也是MR磁头被广泛应用的最主要原因。目前,MR磁头已得到广泛应用,而采用多层结构和磁阻效应更好的材料制作的GMR磁头(Giant Magnetoresistive heads)也逐渐普及。
2、磁道
当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。一张1.44MB的3.5英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。
3、扇区
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。1.44MB3.5英寸的软盘,每个磁道分为18个扇区。
4、柱面
硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容量=柱面数*磁头数*扇区数*512B。
㈡ 什么叫数据的物理结构和逻辑结构
物理结构,就是在计算机内存中的存储关系。
比如数组,在计算机上的存储是一段连续的内存块。链式存储,是在计算机中不连续的内存使用间接寻找方式连接的,是物理内存的表现。
逻辑结构是指数据的逻辑关系,比如二叉树,我们知道内存是不会分叉的。那么二叉是什么哪。是我们对数据的逻辑关系。物理上就是个指针(间接寻址)
㈢ 文件的物理结构有哪3种,分别具备什么优缺点
一、顺序结构
优点:
1、支持顺序存取和随机存取。
2、顺序存取速度快。
3、所需的磁盘寻道次数和寻道时间最少。
缺点:
1、需要为每个文件预留若干物理块以满足文件增长的部分需要。
2、不利于文件插入和删除。
二、链式结构
优点:
1、提高了磁盘空间利用率,不需要为每个文件预留物理块。
2、有利于文件插入和删除。
3、有利于文件动态扩充。
缺点:
1、存取速度慢,不适于随机存取。
2、当物理块间的连接指针出错时,数据丢失。
3、更多的寻道次数和寻道时间。
4、链接指针占用一定的空间,降低了空间利用率。
三、索引结构
优点:
1、不需要为每个文件预留物理块。
2、既能顺序存取,又能随机存取。
3、满足了文件动态增长、插入删除的要求。
缺点:
1、较多的寻道次数和寻道时间。
2、索引表本身带来了系统开销。如:内外存空间,存取时间等。
拓展资料:
文件存取方法:
顺序存取:顺序存取是按照文件的逻辑地址顺序存取。
固定长记录的顺序存取是十分简单的。读操作总是读出上一次读出的文件的下一个记录,同时,自动让文件记录读指针推进,以指向下一次要读出的记录位置。如果文件是可读可写的。再设置一个文件记录指针,它总指向下一次要写入记录的存放位置,执行写操作时,将一个记录写到文件 末端。允许对这种文件进行前跳或后退N(整数)个记录的操作。顺序存取主要用于磁带文件,但也适用于磁盘上的顺序文件。
可变长记录的顺序文件,每个记录的长度信息存放于记录前面一个单元中,它的存取操作分两步进行。读出时,根据读指针值先读出存放记录长度的单元 。然后,得到当前记录长后再把当前记录一起写到指针指向的记录位置,同时,调整写指针值 。
由于顺序文件是顺序存取的,可采用成组和分解操作来加速文件的输入输出。
直接存取(随机存取法):
很多应用场合要求以任意次序直接读写某个记录。例如,航空订票系统,把特定航班的所有信息用航班号作标识,存放在某物理块中,用户预订某航班时,需要直接将该航班的信息取出。直接存取方法便适合于这类应用,它通常用于磁盘文件。
为了实现直接存取,一个文件可以看作由顺序编号的物理块组成的,这些块常常划成等长,作为定位和存取的一个最小单位,如一块为1024字节、4096字节,视系统和应用而定。于是用户可以请求读块22、然后,写块48,再读块9等等。直接存取文件对读或写块的次序没有限制。用户提供给操作系统的是相对块号,它是相对于文件开始位置的一个位移量,而绝对块号则由系统换算得到。
索引存取:
第三种类型的存取是基于索引文件的索引存取方法。由于文件中的记录不按它在文件中的位置,而按它的记录键来编址,所以,用户提供给操作系统记录键后就可查找到所需记录。通常记录按记录键的某种顺序存放,例如,按代表健的字母先后次序来排序。对于这种文件,除可采用按键存取外,也可以采用顺序存取或直接存取的方法。信息块的地址都可以通过查找记录键而换算出。实际的系统中,大都采用多级索引,以加速记录查找过程。
参考资料:网络:文件存取法
㈣ 什么是数据库物理结构和存储方式的描述
Log File物理结构
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字节
㈤ 轻松掌握什么是数据的物理(存储)结构
数据结构在计算机中的表示(映像)称为数据的物理(存储)结构 它包括数据元素的表示和关系的表示
物理结构 即oracle数据库使用的操作系统文件结构 对于数据库物理结构文件 不同的oracle版本 不同的操作系统平台上有不同的存储目录结构
winnt| d:oracleproct oradataDB_NAME * *(oracle g);d:orantdatabase* *(oracle oracle ) Unix | /home/app/oracle/proct/ /oradata/DB_NAME/* * ( g);/home/app/oradata/db_name/* *( i i)
数据库的物理结构文件按其作用可以分为三类
数据文件
日志文件
控制文件
一 数据文件
数据文件用来存储数据库的数据 如表 索引等 读取数据时 系统首先从数据库文件中读取数据 并存储到SGA的数据缓冲区中 这是为了减少I/O 如果读取数据时 缓冲区中已经有要读取的数据 就不需要再从磁盘中读取了 存储数据时也是一样 事务提交时改变的数据先存储到内存缓冲区中 再由oracle后台进程DBWR决定如何将其写入到数据文件中
查询数据文件的信息
sql>select * from dba_data_files或 sql>select * from v$datafile (此数据字典包含文件的动态信息)
一个数据文件只与一个数据库相联系 数据文件的大小是可以改变的 可以通过以下语句查询表空间的空间空闲量
sql>select * from dba_free_space
修改数据文件的大小
sql>alter database datafile "d: df dbf" resize m
数据库文件的自动扩展特性 请看下面的例子:
sql>alter tablespace tbs add datafile "d: df dbf" size m autoextend on next m maxsize m sql>alter database mydb datafile "d: df dbf" "d: df dbf" autoexetend off sql>alter database mydb datafile "d: df dbf" "d: df dbf" autoexetend on next m maxsize unlimited
二 重做日志文件
重做日志文件记录对数据库的所有修改信息 它是三类文件中最复杂的一类文件 也是保证数据库安全与数据库备份与恢复有直接关系的文件
日志文件组与日志成员
在每一个oracle数据库中 至少有两个重做日志文件组 每组有一个个或多个重做日志文件 即日志成员 同一组中的成员是镜像关系 它们存储的内容是一模一样的 Oracle在写日志时 以一个日志组为逻辑单位写入 只在将日志都写入日志组中的每个成员文件中后 写日志才完成
日志工作原理
Oracle有多个日志文件组 当一个日志文件组中所有的成员所有的成员同时被写满数据时 系统自动转换到下一个日志文件组 这个转换过程称为日志切换
当日志切换后 会给前一个日志组编一个号 用于归档日志的编号 这个编号称为日志序列号 此编号由 开始 每切换一次 序列号自动加 最大值受参数MAXLOGHISTORY限制 该参数的最大值为
当oracle把最后一个日志组写满了以后 自动转向第一个日志组 这时 再向第一个日志组写日志的时候 如果数据库运行在非归档模式下 这个日志组中的原有日志信息就会被覆盖
使用以下语句查询日志文件信息
sql>select * from v$log
相关字段说明如下
GROUP#:日志文件组号
THREAD#:日志文件线程号 一般为 双机容时为
SEQUENCE#:日志序列号
BYTES:日志文件大小
MEMBERS:该组的日志成员个数
ARC:该组日志信息是否已经完成归档
STATUS:该组状态(CURRENT:表示当前正在使用的组 NACTIVE:表示非活动组 ACTIVE:表示归档未完成)
FIRST_CHANGE#:系统改变号SCN 也叫检查点号
FIRST_TIME:系统改变时间
DBA可以使用下列命令进行强制日志切换
sql>alter system switch logfile
NOARCHIVELOG/ARCHIVELOG
NOARCHIVELOG是非归档模式 如果数据库运行在这种模式下 当日志切换时 新切换到的日志组中的日志信息会被覆盖 ARCHIVELOG:归档模式 如果数据库运行在这种模式下 日志会被归档存储 产生归档日志 且在未归档之前 日志不允许被覆盖写入
要确认数据库的归档方式 可以查询数据字典v$database:
sql>select log_mode from v$database
要了解归档日志的信息 可以查询数据字典v$archived_log
要将数据库改为归档模式
a alter database archivelog
b 设置初始化参数LOG_ARCHIVE_START=TRUE
c 设置归档文件目标存储路径 LOG_ARCHIVE_DEST=C:ORAARCHIVE
d 设置归档文件命名格式参数 LOG_ARCHIVE_FORMAT="ORCK%T%S ARC" 这个格式中的%S表示日志序列号 自动左边补零 %s表示日志序列号 自动左边不补零 %T表示日志线程号 左边补零 %t表示日志线程号不补零
e 重新启动数据库
CKPT进程(检查点进程)
CKPT进程保证有修改过的数据库缓冲区中的数据都被写入到数据文件 日志文件 数据文件 数据库头和控制文件中都有写入检查点标记 数据库在恢复时 只需提供自上一个检查以来所做的修改 检查点完成时系统将更新数据库数据库头和控制文件
参数LOG_CHECKPOINT_TIMEOUT决定一个检查点发生的时间间隔 LOG_CHECKPOINT_INTERVAL决定一个检查需要填充的日志文件块的数量 检查点号 也称系统改变号(SCN) 它标识一个检查点 可以通过v$log查询日志文件的检查点信息 通过v$datafile查询数据文件的检查点信息 通过v$database查询数据库头的检查点信息 三个地方的检查点号相同 如果不同 说明发明数据库不同步 此时数据库肯定无法正常启动
增加与删除日志文件组 日志成员(详细语法请参考oracle文档)
alter database [database] add logfile [group integer] filespec[ [group alter database [database] add logfile ( ) alter database [database] drop logfile [grout integer] alter database[database] add logfile member "filespec" [reuse] to group integer alter database [database] drop logfile member "filename" "filename" alter database [database] rename file "filename" to "filename
"
清除日志文件数据
alter database [database] clear [unarchived] logfile group integer|filespec
三 控制文件
控制文件是一个二进制文件 用来描述数据库的物理结构 一个数据库只需要一个控制文件 控制文件的内容包括
数据库名及数据库唯一标识
数据文件和日志文件标识
数据库恢复所需的同步信息 即检查点号
控制文件由参数control_files指定 格式如下
control_files=("home/app/ /control ctl" "home/app/ /control ctl")
参数中各个文件是镜像关系 也就是说 几个文件中只要有一个文件完好 数据库就可以正常运行
以下语句查询控制文件的信息
sql>select * from v$controlfile
如果控制文件损坏或丢失 数据库将终止并且无法启动 所以 要对控制文件进行镜象 手工镜像步骤如下
a 关闭数据库
b 复制控制文件
c 修改参数文件 加入新增的控制文件位置描述
d 重新启动数据库
另外注意 控制文件中还包含几个服务器参数的设置 如果修改这些参数的值 刚需要重新创建控制文件 这些参数是
MAXLOGFILES:最大日志文件个数
MAXLOGMEMBERS:最大日志成员个数
MAXLOGHISTORY:最大历史日志个数
MAXDATAFILES:最大数据文件个数
MAXINSTANCES:最大实例文件个数
所有修改数据库结构的命令都会引起控制文件的改变 同时出会记录在oracle跟踪文件中 跟踪文件的名称为alter_SID log 路径如下
d:oracleproct adminDB_NAMEmpSIDALRT log(unix是alter_SID ora)
也可以在参数文件中指定跟踪文件的存储路径 后台进程跟踪文件目录由参数background_mp_dest指定 用户跟踪文件位置由参数user_bmp_dest指定 如
lishixin/Article/program/SQL/201405/30847