`
zhang_xzhi_xjtu
  • 浏览: 538445 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

oracle数据库概念

    博客分类:
  • db
阅读更多
01 概念

术语
SGA: system global area
PGA: program global area

关系数据库的特点:
1 良好定义的结构 2 清晰定义的操作 3 完整性检查

逻辑操作和物理操作。

Schema Object 逻辑数据结构,比如表,索引。

物理存储结构:
Data files: 存储数据,table,index。
Control files: 数据库物理结构的元数据。
Online redo log files: 记录所有对数据的改动。

逻辑存储结构:
Data blocks, Extents, Segments, Tablespaces.

数据库 数据库实例

client process | background process | server process

02 schema和表

Each user owns a single schema, which has the same name as the user. The schema contains the data for the user owning the schema.

一个用户有一个schema,一个schema包含多个schema object。

Schema object: Table,Indexes,Partitions,Views,Sequences,Dimensions,Synonyms,PL/SQL subprograms and packages

schema object的依赖。
当被依赖的schema object改变的时候,需要重新编译依赖它的schema object。

系统自带的SYSTEM schema用来维护整个db,任何人都不应该手动改动它。

样例schema。

表可以分为Relational tables 和 Object tables.
也可以分为heap-organized table | index-organized table | external table
也可以分为permanent or temporary

计算列:不占用空间。
NOT NULL or PK可以保证存储值不为null。

列的类型:

VARCHAR2 and CHAR
定长字符串VARCHAR2和可变字符串CHAR,Oracle对定长字符串比较的时候会加上padding的空白,注意存储长度的区别。
NCHAR and NVARCHAR2
unicode编码的字符串。

Numeric 十进制的数字存储。
NUMBER
BINARY_FLOAT and BINARY_DOUBLE 2进制的存储方式存储,注意不能精确的存储原值。

Date: 精确到秒 8个byte
TIMESTAMP: 更精确的时间。可以关联时区。

RowId:
Physical rowids store the addresses of rows in heap-organized tables, table clusters, and table and index partitions.

Logical rowids store the addresses of rows in index-organized tables.

Format Models and Data Types:指定格式转换,不影响底层真正的存储。

Object Tables
用户自定义类型,然后用该类型定义表的列。

Temporary Tables
临时表,Unlike temporary tables in some other relational databases, when you create a temporary table in an Oracle database, you create a static table definition. The temporary table is a persistent object described in the data dictionary, but appears empty until your session inserts data into the table. You create a temporary table for the database itself, not for every PL/SQL stored procedure.

External Tables
外部表可以把外部资源(比如文件)整合的像是在数据库中一样。

表存储
默认情况,表记录是无序存储的,即heap-organized,db会自己探测哪里适合存储记录,这就导致了记录是无序的。
表压缩技术,取出重复冗余数据。
存储null:尽量节省空间,如果碰到下一行的开始,则这一行剩余的列都是null。

Table Clusters
一组表共享一些列,并且相关的数据存储在同一个block里。

Indexed Clusters
就是在Table Cluster上加的索引。
Hash Clusters
不用单独的索引结构,用数据本身的hash作为索引。




03 Index

使用索引可以大大提高数据库的性能。

Primary and unique keys automatically have indexes.

复合索引的列顺序问题。组合列中在前面的列在where子句中查询才会走索引。

Reverse key indexes 防止相近的key聚集。但是没有了Index Range Scan功能。

B-Tree Indexes 典型的B-Tree索引。

Full Index Scan:可以消除排序,因为index本身已经排序。

Suppose that an application runs the following query:SELECT department_id, last_name, salary FROM   employeesWHERE  salary > 5000 ORDER BY department_id, last_name;Also assume that department_id, last_name, and salary are a composite key in an index. Oracle Database performs a full scan of the index, reading it in sorted order (ordered by department ID and last name) and filtering on the salary attribute. In this way, the database scans a set of data smaller than the employees table, which contains more columns than are included in the query, and avoids sorting the data.



Fast Full Index Scan:只扫描Index table,因为Index table已经包含了所有要返回的数据。
A fast full index scan is a full index scan in which the database reads the index blocks in no particular order. The database accesses the data in the index itself, without accessing the table.


Index Range Scan。
Index Unique Scan。
Index Skip Scan:customers table的cust_gender列不是M就是F,该表有一个复合索引(cust_gender, cust_email).
那么以下这个查询
SELECT * FROM sh.customers WHERE cust_email = 'Abbey@company.com';
数据库自己优化为:
SELECT * FROM sh.customers WHERE cust_gender = 'F'
  AND cust_email = 'Abbey@company.com'
UNION ALL
SELECT * FROM sh.customers WHERE cust_gender = 'M'
  AND cust_email = 'Abbey@company.com';

Reverse Key Indexes:反转Index key的存储。对于没有反转的index,连续值的index会插入在同一或者相近的block里,造成竞争。而反转的index,连续的index被分散存储。但是同时,Reverse Key Indexes丢失了range scan的能力。


Index Clustering Factor:衡量索引的聚集性,该值越低,则一个范围内的索引更倾向于指向同一个数据块(data block)。

索引的顺序:索引可以定义存储时的顺序,升序或者降序。

Key Compression:索引的Key的存储可以重新排列以节省空间。原有的key可以被分解为prefix entry和suffix entry。

online,0,AAAPvCAAFAAAAFaAAa
online,0,AAAPvCAAFAAAAFaAAg
online,2,AAAPvCAAFAAAAFaAAm
可以排成
online,0
AAAPvCAAFAAAAFaAAa
AAAPvCAAFAAAAFaAAg
online,2
AAAPvCAAFAAAAFaAAm

Bitmap Indexes:对于查询多且取值范围小的列适用。
Bitmap Join Indexes。
Bitmap Storage Structure:一样用B-Tree.

Function-Based Indexes:基于函数的索引。
Application Domain Indexes:基于应用域的索引,用户可以高度定制。

Index Storage:索引可以任意存储,索引和其索引的表不在同一个tablespace中给表备份带来了方便。

Heap-Organized Table
rows are inserted where they fit。

Index-Organized Tables
叶子节点直接存储row。以PK作为索引。

两种表的对比

Heap-Organized Table
The rowid uniquely identifies a row. Primary key constraint may optionally be defined.
Physical rowid in ROWID pseudocolumn allows building secondary indexes.
Individual rows may be accessed directly by rowid.
Sequential full table scan returns all rows in some order.
Can be stored in a table cluster with other tables.
Can contain a column of the LONG data type and columns of LOB data types.
Can contain virtual columns (only relational heap tables are supported).

Index-Organized Table
Primary key uniquely identifies a row. Primary key constraint must be defined.
Logical rowid in ROWID pseudocolumn allows building secondary indexes.
Access to individual rows may be achieved indirectly by primary key.
A full index scan or fast full index scan returns all rows in some order.
Cannot be stored in a table cluster.
Can contain LOB columns but not LONG columns.
Cannot contain virtual columns.

Index-Organized Tables with Row Overflow Area
Index-Organized Tables中,为了解决行过大问题,可以把一行分为2部分存储。The index entry储存PK和一些可选列,放在index segment里面,The overflow part包含其他的列,放在storage area segment里面。

Secondary Indexes on Index-Organized Tables
logical rowids以PK为基础,所以2级索引可以直接构建在logical rowid之上。

Bitmap Indexes on Index-Organized Tables




4 Partitions, Views, and Other Schema Objects

Partitioning enables you to decompose very large tables and indexes into smaller and more manageable pieces called partitions. Each partition is an independent object with its own name and optionally its own storage characteristics.

分区的优点

Increased availability
Easier administration of schema objects
Reduced contention for shared resources in OLTP systems
Enhanced query performance in data warehouses

Partition Key
用来决定分区的键值。
Partitioning Strategies
多种分区策略,可以只做一次分区,也可以分区之中再做分区。
用范围分区,用指定值list分区,用hash分区。

Index一样可以分区:
local partitioned index:一个索引的分区对应一个表的分区。
local partitioned index可以分为Local prefixed indexes和Local nonprefixed indexes。
Local prefixed indexes:The partition keys are on the leading edge of the index definition.
Local nonprefixed indexes: The partition keys are not on the leading edge of the indexed column list and need not be in the list at all.
注意查询的时候,可以对Local prefixed indexes做优化,partition elimination。

Global Partitioned Indexes
索引的分区和表的分区没有了一一对应关系。

Overview of Synonyms

A synonym is an alias for a schema object.

You can create both private and public synonyms. A private synonym is in the schema of a specific user who has control over its availability to others. A public synonym is owned by the user group named PUBLIC and is accessible by every database user.

Synonyms themselves are not securable. When you grant object privileges on a synonym, you are really granting privileges on the underlying object. The synonym is acting only as an alias for the object in the GRANT statement.















  • 大小: 52.1 KB
  • 大小: 26.1 KB
  • 大小: 37.2 KB
分享到:
评论

相关推荐

    oracle数据库入门书

    Oracle数据库概念与SQLServer等其他关系型数据库有许多共通之处,例如,数据库、表、记录、以及表的增删改查操作都是基本概念。然而,Oracle作为一个基于对象的关系型数据库,其在数据存储和管理上也体现了一些面向...

    oracle实例名,数据库名,服务名等概念区别与联系.doc

    Oracle 数据库概念解释 Oracle 数据库中有多个概念经常让初学者感到困惑,例如数据库名、实例名、数据库域名、全局数据库名、服务名等。今天我们将详细解释这些概念的区别和联系。 数据库名 (DB_NAME) 数据库名是...

    Oracle数据库大作业

    【Oracle数据库大作业】是一个关于Oracle数据库在教务管理系统中的应用项目,可能涵盖了数据库设计、实施、优化等多个方面的内容。这个大作业包含了PPT演示文稿、Word文档以及可能的源代码,为学习者提供了全面了解...

    Oracle数据库系统应用与开发

    这包括对数据库概念的理解,如数据模型(如层次、网状和关系模型)、表结构、索引、存储过程、触发器等。此外,了解SQL语法,包括DML(数据操纵语言)用于插入、更新和删除数据,以及DDL(数据定义语言)用于创建和...

    Oracle数据库体系结构( 中文详细版)

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其强大的功能和稳定性使其在企业级应用中占据了重要地位。...通过理解这些核心概念,可以更好地管理和优化Oracle数据库,提升系统的稳定性和性能。

    oracle数据库编程pdf文档教案

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。这份"Oracle数据库编程pdf文档教案"提供了从基础到高级的Oracle学习路径,通过5天的学习内容,帮助读者深入理解并掌握...

    Oracle数据库资料大全

    本资料大全将围绕Oracle数据库的核心概念、管理和优化等方面进行深入探讨。 一、Oracle数据库基础 Oracle数据库系统基于SQL标准,采用分布式数据库架构,支持多种数据类型,如数值、字符串、日期、二进制等。其主要...

    Oracle基础教程

    Oracle 基础教程 Oracle 是一款流行的关系型数据库管理系统,由 Oracle 公司开发和...Oracle 基础教程 涵盖了 Oracle 数据库的安装、数据库概念和优化等方面的内容,为读者提供了一个系统的 Oracle 数据库知识体系。

    Oracle数据库试题100题(附答案)

    在数据库管理中,Oracle数据库的表空间概念非常重要。一个表空间可以包含多个数据文件,而一个数据文件只能属于一个表空间。用户在创建时,默认表空间为SYSTEM,但是在生产环境中,一般会为不同的用户指定不同的默认...

    labview 调用oracle数据库

    LabVIEW是一种图形化编程语言,常用于开发工业...理解这些概念和步骤,将有助于在LabVIEW环境中有效地管理和操作Oracle数据库。在实际应用中,还要考虑错误处理、事务管理和性能优化等问题,以确保系统的稳定性和效率。

    Oracle数据库基础教程-参考答案

    1. 数据库概念: 数据是数据库中存储的基本元素,常以记录的形式存在于计算机中。数据库是按照特定数据模型组织、描述和存储数据的集合。数据库管理系统(DBMS)是用于管理这些数据的软件,它位于操作系统和用户...

    oracle数据库_实例_用户_表空间之间的关系

    Oracle 数据库实例用户表空间之间的关系是 Oracle 数据库管理系统的核心概念。了解它们之间的关系对于数据库的设计、管理和优化至关重要。 数据库 Oracle 数据库是一个物理存储单元,包括数据文件(ORA 或者 DBF)...

    Oracle数据库使用指南

    1.1.4 Oracle数据库基本概念 Oracle数据库由多个组件组成,如数据库实例(Instance)、数据库文件(Data Files)、控制文件(Control Files)、重做日志文件(Redo Log Files)等。实例是运行在操作系统上的内存结构...

    oracle 数据库oracle 数据库

    Oracle数据库是一种广泛使用的商业关系型数据库管理系统...文件D33051.pdf和D33052.pdf可能包含了更深入的Oracle数据库概念、最佳实践、配置指南或案例研究,进一步的学习将有助于提升对Oracle数据库的理解和操作能力。

    ORACLE数据库备份用bat脚本

    首先,让我们理解"Oracle数据库备份用bat脚本"的概念。批处理脚本是Windows操作系统中的一种命令文件,可以包含一系列的DOS命令,用于自动化执行特定的任务。在Oracle数据库环境中,我们可以利用Oracle的数据泵工具...

    Oracle数据库学习课件

    1. **Oracle数据库基础**:首先,你会了解到数据库的基本概念,如数据模型(层次、网络、关系)、关系数据库理论,以及Oracle数据库系统的特点和优势。此外,还会介绍Oracle数据库的安装、配置和初始化过程。 2. **...

    易语言oracle数据库连接模块源码

    在易语言中,开发者可以利用这些基础概念和方法,构建出强大的Oracle数据库应用。无论是简单的数据查询,还是复杂的业务逻辑处理,都能借助易语言和Oracle数据库连接模块实现。对于初学者,理解这些基本原理并结合...

    Oracle数据库字符集问题解析.pdf

    "Oracle数据库字符集问题解析" Oracle 数据库字符集问题解析是 Oracle 数据库管理系统中一个非常重要的问题。字符集是创建数据库时设定的,在创建后通常不能更改。因此,字符集的设定是个非常关键的问 题,如果...

    Abp项目模板使用Oracle数据库

    在这个“Abp项目模板使用Oracle数据库”的场景中,开发者已经将Abp框架与Oracle 11g数据库集成,以便利用Oracle的强大功能来存储和管理应用程序的数据。Abp.Zero是Abp框架的一个子模块,主要关注多层架构中的基础...

Global site tag (gtag.js) - Google Analytics