首页 > 数据库 >高斯数据库HCNA之数据库基本概念

高斯数据库HCNA之数据库基本概念

时间:2023-11-07 22:33:12浏览次数:35  
标签:事务 高斯 数据库 数据类型 视图 索引 HCNA 数据

二、数据库基本概念

1、数据库和数据库实例

数据库(Database)
数据操作系统文件或磁盘数据块的集合
比如数据文件,索引文件,结构文件
并非所有的数据库系统都是基于文件的,也有直接把数据写入数据存储的形式

数据库实例(Database Instance)
实例指的就是操作系统中一系列的进程以及为这些进程所分配的内存块
数据库实例是访问数据库的通道
通常来说一个数据库实例对应一个数据库

高斯数据库HCNA之数据库基本概念_数据

多实例
利用多实例操作,可以更充分的利用硬件资源,让服务器性能最大化

分布式集群
集群就是一组组互相独立的服务器,通过高速的网络组成一个计算机系统
分布式每个数据库中都可能有数据库的一份完整副本,或者部分副本
所有服务器通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库

高斯数据库HCNA之数据库基本概念_数据库_02

2、数据库连接和会话

数据库连接(Connection)
物理层面的通信连接,指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或调度器(Shared Server)的一个网络连接
建立连接时候指定连接参数,如数据库主机名或IP,端口号,连接用户名和口令等

数据库会话(Session)
客户端与数据库之间通信的逻辑概念
通信双方从开始通信到通信结束期间的一个上下文(Context)
这个上下文是一段位于服务器端的内存,记录了本次连接的客户端机器、对应的应用程序进程号、对应的用户登录等信息

高斯数据库HCNA之数据库基本概念_数据库_03

3、数据库连接池

建立数据库连接是有代价的
频繁的建立和关闭数据库连接,会使得对连接资源的分配和释放成为数据库的瓶颈,从而降低数据库系统的性能

连接池:数据库连接的复用
负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
数据库连接可以得到高效、安全的复用

高斯数据库HCNA之数据库基本概念_字段_04

4、Schema

Schema是数据库形式语言描述的一种结构,是对象的集合
允许多个用户使用一个数据库而不干扰其他用户
把数据库对象组织成逻辑组,让他们更便于管理
形成命名空间,避免对象的名字冲突
schema又包含表及其他数据库,对象,包括数据类型、函数、操作符等

高斯数据库HCNA之数据库基本概念_数据_05

5、表空间

表空间是由一个或者多个数据文件组成
  通过表空间定义数据库对象文件的存放位置
  数据库中所有对象在逻辑上都存放在表空间中
  在物理上存储在表空间所属的数据文件中

表空间作用
根据数据库对象使用模式安排数据物理存放位置,提高性能
  频繁使用的索引放置在性能稳定且运算速度快的磁盘上
  归档数据,使用频率低,对访问性能要求低的表存放在速度慢的磁盘上
通过表空间指定数据占用的物理磁盘空间
  通过表空间限制物理空间使用上限,避免磁盘空间被耗尽

高斯数据库HCNA之数据库基本概念_字段_06

6、系统内置表空间

高斯数据库HCNA之数据库基本概念_字段_07

7、表

在关系数据库中,数据库表就是一系列二维数组的集合
用来代表和存储数据对象之间的关系

记录
表中的每一行称为一个记录,由若干个字段组成

字段
也称为域,表中的每一列称为一个字段
每个字段都包含两个属性:列名和数据类型

高斯数据库HCNA之数据库基本概念_数据库_08

高斯数据库HCNA之数据库基本概念_字段_09

8、临时表

GaussDB 100支持创建临时表
临时表用来保存一个会话或者一个事务中需要的数据
当会话退出或者用户提交和回滚事务的时候,临时表的数据自动清空,但表结构仍然存在
临时表中的数据是临时的,过程性的,不需要和普通数据表那样永久保留的
临时表又分
  会话级临时表
  事务级临时表

高斯数据库HCNA之数据库基本概念_数据库_10

9、表的存储方式

高斯数据库HCNA之数据库基本概念_数据_11

10、存储方式的选择

列存适合的场景
统计分析类查询(group,jion多的场景)
适合OLAP,数据挖掘等大量查询的应用查询

行存适合的场景
点查询(返回记录少,基于索引的简单查询)
适合OLTP,这种轻量级事务,大量写操作,数据增删改查比较多的场景

11、NOLOGGING表

指定NOLOGGING关键字,或者指定放在NOLOGGING表空间
NOLOGGING表不记录Redo日志
日志量减少提高数据写性能
没有Redo日志,出现故障数据库重启后无法重演恢复(Recover)
适用对象
可靠性要求不高的非核心数据

高斯数据库HCNA之数据库基本概念_数据库_12

12、分区

分区表是将大表的数据分成许多小的数据子集,称为分区
  范围分区表
  列表分区表
  哈希分区表
  间隔分区表

分区表的收益
  改善查询性能
  增强可用性
  方便维护
  均衡I/O

高斯数据库HCNA之数据库基本概念_字段_13

13、分区适用场景

高斯数据库HCNA之数据库基本概念_数据_14

14、分区剪枝的原理

高斯数据库HCNA之数据库基本概念_字段_15

15、数据分布

高斯数据库HCNA之数据库基本概念_字段_16

16、数据策略选择

高斯数据库HCNA之数据库基本概念_数据_17

17、分布列选择原则

选择分布列的时候,一般遵循下面三个原则
尽量选择离散值比较多的列,保证数据均匀分布,均匀分布是为了避免木桶效应,各个DN对等执行
在满足第一条原则的情况下,不要选择存在常量过滤的列
满足前两条原则的情况下,尽量选择关联字段或聚合字段做分布列,这种方式是为了避免数据节点之间数据重分布,降低IO的开销从而提升关联操作和聚合操作的性能

高斯数据库HCNA之数据库基本概念_数据库_18

18、数据类型

高斯数据库HCNA之数据库基本概念_数据库_19

19、字段设计建议

尽量使用高效数据类型
  尽量使用执行效率比较高的数据类型
  尽量使用短字段的数据类型
  使用一致的数据类型
当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型
对于字符串数据,建议使用变长字符串数据类型,并指定最大长度

20、视图

视图与基本表不同,不是物理上实际存在的,是一个虚表

高斯数据库HCNA之数据库基本概念_数据_20

21、视图的作用

视图作用
  简化了操作,把经常使用的数据定义为视图
  安全性,用户只能查询和修改能看到的数据
  逻辑上的独立性,屏蔽了真实表的结构带来的影响

限制性
  性能问题:查询可能很简单,但是封装的视图语句很复杂
  修改限制:对于复杂视图,用户不能通过视图修改基表数据

高斯数据库HCNA之数据库基本概念_字段_21

22、索引

索引提供指向存储在表的指定列中的数据值的指针,如同图书的目录,能够加快表的查询速度,但同时也增加了插入、更新和删除操作的处理时间
在创建索引时,以下建议作为参考
在经常需要搜索查询的列上创建索引,可以加快搜索的速度
在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的
在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间
在经常使用where子句的列上创建索引,加快条件的判断速度
为经常出现在关键字order by、group by、distinct后面的字段创建索引

23、有效索引

创建索引≠索引一定被使用
索引创建成功后,系统会自动判断何时引用索引,当系统认为使用索引比顺序扫描更快时,就会使用索引
索引创建成功后,必须和表保持同步以保证能够准确地找到新数据,这样就增加了数据操作的负荷
需要定期删除无用的索引
判断方法
通过执行explain语句查看执行计划来判断是否使用索引

24、索引方式

高斯数据库HCNA之数据库基本概念_字段_22

高斯数据库HCNA之数据库基本概念_数据_23

25、约束

数据的完整性是指数据的准确性和一致性,可以通过定义表时定义完整性约束
  完整性约束是一种规则,本身不占用数据库空间
  完整性约束和表结构定义一起保存在数据字典中

常见的约束类型
  唯一性和主键约束(UNIQUE/PRIMARY KEY)
  外键约束(FOREIGN KEY)
  检查约束(CHECK)
  非空约束(NOT NULL)
  默认约束(DEFAULT)

高斯数据库HCNA之数据库基本概念_字段_24

26、约束的设计

如果能够从业务层面补全字段值,就不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果
给明确不存在NULL值的字段加上NOT NULL约束,优化器会在对其进行自动优化
给可以显式命名的约束显式命名,除了NOT NULL和DEFAULT约束外,其他约束都可以显式命名

27、数据库对象

什么是数据库对象
数据库对象是数据库的组成部分,数据库对象主要包含:表,索引,视图,存储过程,缺省值,规则,触发器,用户,函数等
表
  表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系,由行和列组成的
索引
  索引是对数据库表中一列或多列的值进行排序的一个结构,使用索引可快速访问数据库表中的特定信息
视图
  视图是从一个或几个基本表汇总导出的虚表,可用于控制用户对数据访问
存储过程
  存储过程是一组为了完成特定功能的SQL语句的集合,一般用于报表统计,数据迁移等
缺省值
  缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值
规则
  规则是对数据库表中数据信息的限制,它限定的是表的列
触发器
  触发器是一种特殊类型的存储过程,通过指定的事件触发执行,一般用户数据审计、数据备份等
函数
  函数是对一些业务逻辑的封装,以完成特定的功能,函数执行完成后会返回执行结果

28、数据库对象间关系

高斯数据库HCNA之数据库基本概念_数据库_25

29、事务

事务(Transaction)
事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元执行
一个事务内的所有语句作为一个整体,要么全部执行,要么全部不执行
比如A账户给B账户转账1000元
  第一个操作:A账户-1000
  第二个操作:B账户+1000
转账的两个操作必须通过事务来保证全部操作成功,或者全部失败

事务结束的标记有两个
正常结束,COMMIT(提交事务)
异常结束,ROLLBACK(回滚事务)

30、事务处理模型

事务处理模型分为两类
  显式事务:事务有显式的开始和结束标记
  隐式事务:每一条数据操作语句都自动的成为一个事务

高斯数据库HCNA之数据库基本概念_数据库_26

31、事务特征-ACID

事务特征-ACID
原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中的操作,要么全做,要么全不做
一致性(Consistency)
事务的执行结果必须是使数据库从一个一致性状态转到另一个一致性状态
隔离性(Isolation)
数据库中一个事务的执行不能被其他事务干扰,即一个事务的内部操作及使用的数据对其他事务是隔离的,并发执行的各个事务不能相互干扰
持久性(Durability)
事务一旦提交,对数据库中数据的改变是永久的,提交后的操作或者故障不会对事务的操作结果产生任何影响

32、数据不一致情况-脏读

"Dirty" Reads(脏读)
一个事务读取到了其他事务中还没有提交(Committed)的数据
因为未提交数据存在回滚的可能,所以被称为"脏数据"

高斯数据库HCNA之数据库基本概念_数据库_27

33、数据不一致情况-不可重复读

Non-repeatable Reads(不可重复读)
一个事务所获取到的数据是可以被其它事务修改的
一个事务在处理过程中多次读取同一个数据(重复读),这个数据是可能发生变化的,因此被称为不可重复读
Phantom Reads(幻影读)
是不可重复读的更为特殊的一个场景
事务T1按照一定条件读取数据(使用了WHERE条件过滤)后,事务T2删除了部分记录或者插入了一些新的记录,这些变更的数据是满足where条件过滤的
那么当T1再次按照相同条件读取数据时,就会发现莫名其妙的少了(也可能多了)一些数据
这些变化的数据就被称为"幻影"数据

高斯数据库HCNA之数据库基本概念_字段_28

34、事务隔离级别

ANSI SQL标准定义了4种事务隔离级别来避免3种数据不一致的问题,事务级别从高到低,分别为
Serializable(序列化)
  系统中所有的事务以串行的方式逐个执行,所以能避免所有数据不一致的情况
  但是这种以排他方式来控制并发事务,串行化执行方式会导致事务排队,系统的并发量大幅下降,使用的时候要绝对慎重
Repeatable read(可重复读)
  一个事务一旦开始,事务过程中所读取的所有数据不允许被其他事务修改
  这个隔离级别没有办法解决"幻影读"的问题
  因为它只保护了它读取的数据不被修改,但是其他数据会被修改,如果其他数据被修改后恰好满足了当前事务的过滤条件(where子句),那么就会发生"幻影读"的情况
Read Committed(已提交读)
  一个事务能读取到其他事务提交过(Committed)的数据
  一个事务在处理过程中如果重复读某一个数据,而且这个数据恰好被其他事务修改并提交了,那么当前重复读取数据的事务就会出现同一个数据前后不同的情况
  在这个隔离级别会发生"不可重复读"的场景
Read Uncommitted(未提交读)
  一个事务能读取到其他事务修改过,但是还没有提交的(Uncommitted)的数据
  数据被其他事务修改过,但还没有提交,就存在着回滚的可能性,这时候读取这些"未提交"数据的情况就是"脏读"
  在这个隔离级别会发生"脏读"场景

35、事务隔离级别与问题对应表

高斯数据库HCNA之数据库基本概念_数据_29

标签:事务,高斯,数据库,数据类型,视图,索引,HCNA,数据
From: https://blog.51cto.com/u_13236892/8240246

相关文章

  • 数据库
    DQL数据查询语言从数据表中提取满足特定条件的记录单表查询多表联合查询查询基础语法 where字句在删除、修改及查询的语句后都可以添加where子句(条件),用于筛选满足特定的添加的数据进行删除、修改和查询操作。 条件关系运算符条件逻辑运算符在where子句中,可以将多......
  • openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果
    openGauss学习笔记-117openGauss数据库管理-设置数据库审计-查看审计结果117.1前提条件审计功能总开关已开启。需要审计的审计项开关已开启。数据库正常运行,并且对数据库执行了一系列增、删、改、查操作,保证在查询时段内有审计结果产生。数据库各个节点审计日志单独记录。......
  • StarRocks 新一代极速全场景MPP数据库
    StarRocks介绍1.StarRocks介绍StarRocks是新一代极速全场景MPP数据库。StarRocks充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果,在业界实践的基础上,进一步改进优化、升级架构,并增添了众多全新功能,形成了全新的企业级产品。StarRocks致力于构建极速统一......
  • 20231107学习总结-大型数据库-实验1.熟悉常用的Linux操作和Hadoop操作
    实验1熟悉常用的Linux操作和Hadoop操作1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3。3.......
  • 大型数据库实验一
    Linux操作和Hadoop操作实验报告一、熟悉的Linux操作1、切换到目录“/usr/local”2、切换到当前目录的上一级目录3、切换到当前登录系统的Linux系统的用户的自己的主文件夹4、查看/usr目录下的所有文件和目录5、在/tmp目录下,新建一个名为a的目录,并查看/tmp目录下已经有了......
  • PostGIS创建Gis空间数据库,shp数据入库
    转自:https://blog.csdn.net/An1090239782/article/details/123509645postgresql创建gis空间数据库,shp数据入库https://blog.csdn.net/gis_zzu/article/details/91045052https://www.jianshu.com/p/2c4f714c62b5PostgreSQL创建空间数据库1postgresql创建空间数据库1.1创建普通......
  • 云存储/视频监控管理平台EasyCVR,使用sqlite数据库出现卡顿该如何优化?
    视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。有用......
  • 软件开发项目文档系列之八数据库设计说明书
    数据库设计说明书是一个关键文档,它提供了有关数据库的详细信息,包括设计、结构、运行环境、数据安全、管理和维护等方面的内容。1引言引言部分,简要介绍数据库设计说明书的目的和内容。这部分通常包括以下内容:引言的目的:解释为什么需要数据库设计说明书,它的重要性以及它对项目的......
  • 数据库系列:InnoDB下实现高并发控制
    数据库系列:MySQL慢查询分析和性能优化数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能数据库系列:前缀索引和索引长度的取舍数据库系列:MySQL引擎My......
  • 数据库命令行操作时,出现乱码问题
    <1>在命令行对数据库进行操作时,查看数据库中表的数据时,出现乱码问题。问题截图如下:出现这种问题的原因是:表使用的编码是utf8,而命令行使用的是GBK解决办法如下:一开始,以为是数据库的字符集编码出现了问题但是,修改之后查询发现还是没有作用。然后通过查找资料发现:表使用的编码是utf8,而......