高性能sql优化-对象类型

一、序言

   数据库的功能,就是组织、存储和管理各种各样的数据库对象,同时我们创建数据库就是为了在其中创建和存储我们需要和使用的各种数据库对象,这些数据库对象功能各异,各不相同,用来满足我们在数据库方面的各种需求。例如,表用来组织和存储数据,索引用来改善和提升表中数据的检索功能,视图可以为我们使用和管理数据提供便利,存储过程可以按照用户需求完成某些功能和任务等。

二、数据库对象详解

   1、表(Table)

     1)表的概念: 提到数据库,我们对表这个概念并不陌生,通常操作数据时时针对表的,但实际上,表只是一个逻辑概念,是数据库组织和管理和数据的基本单位,是最常见的数据库模式对象类型,也是数据库提供给用户的一个访问数据的逻辑对象,通过它,我们可以看到和操作数据库中的数据。

     2)表分类:从大的方面分为关系表和对象表,进一步细化,关系表又可以包括堆表、索引组织表和外部表。而且我们现实中最常见的是堆表。

     3)表和段:我们访问和操作表中的数据,事实上就是存储在与之对应的段里面的。

         对于分区表,一个表对应一个段

         对于分区表,一个分区对应一个段

         对于有子分区的表。一个子分区对应一个一个段

         对于其他数据对象(例如索引、物理视图等),情况与表类似

      我们一般常用的就是堆表,顾名思义就是堆表对应的段是以堆的结构形式组织和存储的,所谓的堆就是说里面的事物没有统一的管理,而是无需的,只要有空间存放这些事物,放到这个堆中的任何空闲空间都是可以的。对于数据库而言,堆里面的存储的是用户或者系统的数据,且这些数据逻辑上是无序的,同样,物化视图对应的段与堆表类似,而索引对应的段则是不同,但是索引和索引组织的表对应的段类似。

    4)表分区(Partition):所谓的表分区就是跟怒用户的数据情况和业务需求,将表中的数据由原来存储在一个段变为存储在多个段中,方便用户堆数据的管理和维护,同时也可以提升用户对这些数据查询和操作的性能。

       分区的适用场景:

           数据量是否足够大,官方认为表所占存储空间超过2GB时,可以考虑对表进行分区,这个只是理论值,准确的还是要看你的硬件情况,随着你的硬件性能提升,这个值也可以适当的提升。

           目前非分区表是否已经影响用户对数据的管理和维护,在日常工作中, 优势随着数据量的增大,用户管理和维护数据的操作会越来越困难,这会加大对表分区的需求。

          分区是否会提高用户对数据查询和操作的性能。提高用户查询和操作数据的性能是对表进行分区的最基本的目的之一。

          其他用户业务需求等。

    5)分区的优缺点:便于数据的管理和维护,并且在应用分区特点的前提下,会提升对数据的查询和操作的性能。但是如果不能够正确应用分区的特点,容易引起性能问题,甚至会导致更加严重的问题,因为应用分区时,需要比非分区表考虑更多得分因素,主要还是要涉及分区剪裁(Partition Pruning)

 2、索引(Index)

    1)索引的概念:索引是建立在表上的逻辑对象,通过创建索引,可以提升访问表李的数据的效率,起到优化系能的作用。

    2)索引的优缺点:毫无疑问。索引的优点能够提高对表中数据的检索效率,但是会影像DML操作的性能,例如增删改。因为DML操作在修改表中数据时,还会主动修改表中相关索引的数据,而且索引的修改都是有序的,这种有序操作,有时会很大程度上影响整个DML操作的性能。所以,应用索引进行优化操作就是在查询和DML操作之间的折中和权衡。

    3)本地索引和全局索引

            本地索引和全局索引的概念:本地索引就是创建在分区表上面的分区索引,并且本地索引的各个分区和其基于分区表的各个分区一一对应,对应的数据完全相同。全局索引一般也是创建在分区表上面的索引,但是全局索引是分区表上的非分区索引

  3、视图(View)

     1)视图的概念:视图是一种虚的、定义的逻辑对象,主要用来简化业务逻辑、方便开发维护以及实现数据库的安全性等。所谓虚的,是指视图本身并不包含和存储数据,而仅仅将其定义存储于系统字典中,与之对应的‘实’是指相关对象本身实际包含和寻出数据,不仅仅将定义存储到系统字典中,而且,还将其数据存储到响应的数据段中。

   4、物化视图(Materialized View)

   5、同义词(Synonym)

          同义词的本质其实就是个别名

   6、序列(Sequence) 

         序列也是虚的、定义的逻辑对象,它不存储任何数据,用户可以通过它获取到一系列的有序的数值。

   7、索引组织表

   8、过程和函数

   9、触发器

   10、包

   11、约束

猜你喜欢

转载自blog.csdn.net/JavaWeb_Hao/article/details/82720665