热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库的存储结构及其重要性

本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10784599


 

正确答案:A

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

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

 

 

1、Oracle数据库逻辑结构

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

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

gyj@OCM> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
GYJ


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

 

gyj@OCM> col tablespace_name for a20
gyj@OCM> col file_name for a50gyj@OCM> select tablespace_name,file_name from dba_data_files where tablespace_name='GYJ';
TABLESPACE_NAME FILE_NAME
-------------------- --------------------------------------------------
GYJ /u01/app/oracle/oradata/ocm/gyj01.dbf
GYJ /u01/app/oracle/oradata/ocm/gyj02.dbf

 


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

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

 

gyj@OCM> select distinct segment_type from dba_segments;
SEGMENT_TYPE
------------------
LOBINDEX
INDEX PARTITION
TABLE SUBPARTITION
ROLLBACK
TABLE PARTITION
NESTED TABLE
LOB PARTITION
LOBSEGMENT
INDEX
TABLE
TYPE2 UNDO
CLUSTER

 

 

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

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


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

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


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

 

gyj@OCM> show parameter db_block_sizeNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192

 

2、Oracle数据库物理结构     

 (1)、OS文件

      A、仅属于一个表空间

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

 

 (2)、OS

 

A、 tune2fs-l /dev/sda1

 

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


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

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



转:https://www.cnblogs.com/suncoolcat/p/3294965.html



推荐阅读
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 编程挑战:2019 Nitacm 校赛 D 题 - 雷顿女士与分队(高级版)
    本文深入解析了2019年Nitacm校赛D题——雷顿女士与分队(高级版),详细介绍了问题背景、解题思路及优化方案。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 本文总结了优化代码可读性的核心原则与技巧,通过合理的变量命名、函数和对象的结构化组织,以及遵循一致性等方法,帮助开发者编写更易读、维护性更高的代码。 ... [详细]
author-avatar
超级-郁闷中
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有