数据库常用概念理解

数据库概念

本文介绍一下数据库中常用的概念,包含一些自己的理解,欢迎探讨和指正。

分区表

分区这个概念主要适用在大数据量时,比如说,一张表的数据量非常大,那么它的查询速度会比较慢,而且这样的表或者索引很难维护,那么,这个时候就适合对表进行分区。

分区,顾名思义,就是划分区域,将表划分成几个子表,划分后的子表合起来就是原来那张表。
那根据一张表的划分方式的不同,就把分区分为了两种,水平分区和垂直分区。

水平分区就是划分行,表中的每一行数据根据划分策略存储在不同的分区,在执行查询操作时,可以在分区内进行。
垂直分区就是划分列,一条记录中有多个字段,可以把经常一起做查询的字段划分在同一个分区。

视图

首先,视图(view)并不是图,事实上,视图是表,还是虚表,也是逻辑表。也就是说,这个表在空间里并不包含数据的。
建立视图首先要有基表,基表也就是平时大家见到的表,里面存储着很多数据。这是因为视图是依赖于基表而存在的。如果基表不存在了,视图也就失去了意义。

那既然视图里面都没有实际的数据,为什么还要使用视图呢?

其实是为了数据安全,以及权限管理。一张表里存放着的字段有些只能展示给管理员看,普通用户不能查看。这种情况下没有必要对表进行划分,或者建立新的表给不同的用户。通过不同的视图实现表的字段组合,这样可以大幅度的节省空间,也不会破坏掉原本的数据库逻辑结构。

序列

说起序列,这个东西有些数据库支持,有些数据库不支持。那么序列到底是什么东西呢?

在DM数据库中,序列是数据库实体中的一种。通过序列,多个用户可以产生和使用一组不重复的有序整数值。

这样的不重复的有序整数值有什么作用呢?比如说可以自动生成订单编号

这里必须要提一句,序列不等于自增列,这两者是有本质区别的。序列是数据库实体对象,自增列虽然可以通过设置种子、增量来达到自动设置该列的值,但是属于数据库表的约束范畴。而且,一个表只能设置一个自增列,设置后不能对该列进行修改。而序列可以应用在多个列,甚至是多个表,并且在DM中可以通过cycle关键字设置循环序列。

索引

索引是一个与表相关的结构,可以通过索引来提高表的查询速度。
但是索引是占用磁盘空间的,所以在磁盘空间超负荷的时候,再添加索引一般很难提升查询速度。

那么,索引是如何来提高数据查询速度的呢?

数据存储在磁盘上都是无序的,当执行select语句时,根据select查询条件,会在磁盘上一条一条的去匹配,直到遍历完整张表,找到所有符合查询条件的数据。在数据量非常大的时候,比如说十亿条数据,这样的查询是行不通的。这时候就需要索引。

聚集索引是一种按带有顺序的索引,如果你为表中的一个字段建了聚集索引,那么数据就会按照该字段进行排序。就像字典一样,如果你要查找“张”这个字,那么它的首字母是z,那么在查找的时候,是肯定在字典的最后面一部分查找而不会出现在前面或者中间。所以一张表只有一个聚集索引,这是因为一本字典不会出现两种排列方式。

设置主键的时候默认会为主键生成聚集索引。

当然也有非聚集的索引,就是无序的。以及各种索引,什么唯一索引、位图索引,等等等等。这些索引在创建好后,包含了当前索引字段以及主键的数据。在执行select时,分为两步操作。
第一步,根据当前索引字段快速找到对应的主键。
第二步,根据主键值进行回表操作,根据聚集索引提取到所需要的字段中的所有数据。

如果几个字段经常同时被查找,可以为其建立联合索引,可以大幅度提高查询速度。

触发器

触发器(trigger)的定义为,当某些与数据库有关的事件发生时,数据应该采取的操作。通俗的来讲,触发器就是一段会自动执行的SQL代码,它的作用是保障数据库的事务规则。

触发器可以分为表触发器、事件触发器和时间触发器。
表触发器的意思是当你为一张表建立了表触发器,你对表进行更改的时候(insert,update,delete),触发器会被激发。
事件触发器是指当你指定一个事件发生时会被激发的触发器。
时间触发器当然也就是按照时间来触发了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值