当前位置:Gxlcms > mysql > 数据库的存储结构

数据库的存储结构

时间:2021-07-01 10:21:17 帮助过:30人阅读

[每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8 http://blog.csdn.net/guoyjoe/article/details/10784599 、 正确答案:A 将逻辑存储与物理存储分开是关系数据库范例的必要部分。关系数据

[每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8


http://blog.csdn.net/guoyjoe/article/details/10784599


正确答案:A

  将逻辑存储与物理存储分开是关系数据库范例的必要部分。关系数据库范例表明:编程人员只处理逻辑结构,而让数据库去管理到物理结构的映射。这意味着,可以重新组织物理存储,也可以将整个数据库移动到完全不同的硬件和操作系统上,而应用程序意识不到任何更改。

  如下图展示Oracle存储模型,逻辑结构在左,物理结构在右。

 

注释:

从图示可以看出,数据库的存储结构可以分成两条路线去理解:

一是逻辑结构,即数据库由各个表空间组成,表空间由各个段组成,段由各个区段组成,区段由各个oracle块组成;

二是物理结构,即数据库由各个表空间组成,表空间由各个操作系统级别的文件组成,(操作系统级别的)文件由各个操作系统块组成。

疑问:一个段只能存放在一个操作系统级别的文件上吗?还是可以跨文件存放?

1、Oracle数据库逻辑结构

(1)DATABASE:一个数据库可划分为多个称为表空间的逻辑存储单元。

如下查询一个数据库中有七个表空间

[html] view plaincopy

  1. gyj@OCM> select tablespace_name from dba_tablespaces;
  2. TABLESPACE_NAME
  3. ------------------------------
  4. SYSTEM
  5. SYSAUX
  6. UNDOTBS1
  7. TEMP
  8. USERS
  9. EXAMPLE
  10. GYJ


(2)TABLESPACE:只能属一个数据库,包括一个或多个文件。如下表空间GYJ下有两个数据文件。

[html] view plaincopy

  1. gyj@OCM> col tablespace_name for a20
  2. gyj@OCM> col file_name for a50
  3.  gyj@OCM> select tablespace_name,file_name from dba_data_files where tablespace_name='GYJ';
  4. TABLESPACE_NAME FILE_NAME
  5. -------------------- --------------------------------------------------
  6. GYJ /u01/app/oracle/oradata/ocm/gyj01.dbf
  7. GYJ /u01/app/oracle/oradata/ocm/gyj02.dbf


(3)SEGMENT:存在于表空间中,包含一个或多个区。

包括:表段、表分区段、索引段、索引分区段、临时段、撤销段、BLOBCLOB

[html] view plaincopy

  1. gyj@OCM> select distinct segment_type from dba_segments;
  2. SEGMENT_TYPE
  3. ------------------
  4. LOBINDEX
  5. INDEX PARTITION
  6. TABLE SUBPARTITION
  7. ROLLBACK
  8. TABLE PARTITION
  9. NESTED TABLE
  10. LOB PARTITION
  11. LOBSEGMENT
  12. INDEX
  13. TABLE
  14. TYPE2 UNDO
  15. CLUSTER


T1段所在的表空间、区的信息。

[html] view plaincopy

  1. gyj@OCM> select TABLESPACE_NAME,EXTENTS,BYTES/1024/1024||'M',BLOCKS from user_segments where segment_name='T1';
  2. TABLESPACE_NAME EXTENTS BYTES/1024/1024||'M' BLOCKS
  3. -------------------- ---------- ----------------------------------------- ----------
  4. GYJ 1 .0625M 8


(4)EXTENT:由相邻的数据块的组成,这意味着每个区只能存在于一个数据文件中。

[html] view plaincopy

  1. gyj@OCM> select TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where segment_name='T1' and owner='GYJ';
  2. TABLESPACE_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
  3. -------------------- ---------- ---------- ---------- ---------- ----------
  4. GYJ 0 6 176 65536 8



(5)BLOCK:是数据库中最小的I/O单元,db_block_size


[html] view plaincopy

  1. gyj@OCM> show parameter db_block_size
  2. NAME TYPE VALUE
  3. ------------------------------------ ----------- ------------------------------
  4. db_block_size integer 8192


2、Oracle数据库物理结构

(1)、OS文件

A、仅属于一个表空间

B、是构成表空间的基础文件

(2)、OS

A、 tune2fs-l /dev/sda1


[html] view plaincopy

  1. [root@mydb ~]# tune2fs -l /dev/sda1
  2. tune2fs 1.39 (29-May-2006)
  3. Filesystem volume name: /boot
  4. Last mounted on: <not available>
  5. Filesystem UUID: 866e46b9-cb84-4271-b694-4ca3d25dc621
  6. Filesystem magic number: 0xEF53
  7. Filesystem revision #: 1 (dynamic)
  8. Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super
  9. Default mount options: user_xattr acl
  10. Filesystem state: clean
  11. Errors behavior: Continue
  12. Filesystem OS type: Linux
  13. Inode count: 26104
  14. Block count: 104388
  15. Reserved block count: 5219
  16. Free blocks: 89230
  17. Free inodes: 26070
  18. First block: 1
  19. Block size: 1024
  20. Fragment size: 1024
  21. Reserved GDT blocks: 256
  22. Blocks per group: 8192
  23. Fragments per group: 8192
  24. Inodes per group: 2008
  25. Inode blocks per group: 251
  26. Filesystem created: Mon Aug 12 19:59:14 2013
  27. Last mount time: Sat Aug 31 20:35:07 2013
  28. Last write time: Sat Aug 31 20:35:07 2013
  29. Mount count: 16
  30. Maximum mount count: -1
  31. Last checked: Mon Aug 12 19:59:14 2013
  32. Check interval: 0 (<none>)
  33. Reserved blocks uid: 0 (user root)
  34. Reserved blocks gid: 0 (group root)
  35. First inode: 11
  36. Inode size: 128
  37. Journal inode: 8
  38. Default directory hash: tea
  39. Directory Hash Seed: 12499f4f-6bd0-40d2-8a7a-6224b8f449dd
  40. Journal backup: inode blocks


B、扇区:512字节操作系统一次IO的大小

[html] view plaincopy

  1. [root@mydb ~]# fdisk -l
  2. Disk /dev/sda: 26.8 GB, 26843545600 bytes
  3. 255 heads, 63 sectors/track, 3263 cylinders
  4. Units = cylinders of 16065 * 512 = 8225280 bytes
  5. Device Boot Start End Blocks Id System
  6. /dev/sda1 * 1 13 104391 83 Linux
  7. /dev/sda2 14 144 1052257+ 82 Linux swap / Solaris
  8. /dev/sda3 145 3263 25053367+ 83 Linux

人气教程排行