导图社区 HCIA-GaussDB
HCIA-GaussDB是华为认证中的一项认证,全称为华为认证GaussDB数据库工程师。该认证主要面向使用华为GaussDB数据库产品的用户、合作伙伴工程师、内部工程师、高校学生以及ICT从业人员等,是华为认证中工程师级别的认证之一。
编辑于2024-01-19 10:24:00HCIA-GaussDB
数据库介绍
数据库技术概述
数据库技术
数据 Data
记录 Record
数据库 Database DB
数据库管理系统 DBMS
数据库系统 DBS
视图
数据库技术发展史
数据库技术产生
数据库技术产生与发展
视图
数据管理三个阶段比较
视图
数据库系统优势
整体数据的结构化
数据的共享性高,冗余度低且易扩充
数据独立性高
物理独立性:应用程序与数据库中数据的物理存储是相互独立的
逻辑独立性:应用程序与数据库的逻辑结构是相互独立的
统一管理和控制
数据的安全性保护
数据的完整性检查
并发控制
数据库恢复
数据库系统发展特点
视图
层次,网状,关系模型
视图
层次模型
有且只有一个节点没有双亲,该节点被称为根节点(root)
根节点以外的其他节点有且只有一个双亲节点
网状模型
允许一个以上的节点无双亲
一个节点可以有多于一个的双亲
关系模型
建立在严格的数据概念基础上
关系必须是规范化的
关系的分量必须是一个不可分的数据项
层次,网状,关系模型对比
视图
结构化查询语言-Structured Query Language (SQL语言)
高级的非过程化编程语言,允许用户在高层数据结构上工作
不要求用户指定数据存放方法
不需要用户了解具体数据存放方式
底层结构完全不同的各种关系型数据库系统可以使用相同的SQL语言作为数据操作和管理的接口
其他数据模型
面向对象数据模型(ObjectOrientedDataModel,OO模型)
XML数据模型
可扩展标记语言(extensible markup language, 简称XML)
RDF数据模型
资源描述框架(Resource Description Framework,RDF)
数据管理技术的新挑战
视图
5V特性
Volume 数量
Variety 多样性
Veracity 速度
Velocity 真实
Value 价值
NoSQL技术特点和类型
NoSQL(NotOnlySQL)
非关系型的、分布式的、不保证满足ACID特性的一类数据管理系统
技术特点
对数据进行分区(partitioning),利用大量节点并行处理获得高性能,同时能够采用横向扩展方式(scale out)
降低ACID一致性约束,允许暂时不一致,接受最终一致性。遵循CAP理论和BASE原则
各数据分区提供备份(一般是三份),应对节点故障,提高系统可用性
主要NoSQL数据库简介
视图
NoSQL并不是为了取代RDBMS
优势显著,缺点也较为明显
与RDBMS一起构建完整的数据库生态系统
NewSQL浅谈
NewSQL
指追求NoSQL的可扩展性同时能够支持关系模型(包括ACID特性)的关系型数据库系统,主要面向OLTP场景
能够支持SQL作为主要的使用语言
NewSQL的分类
采用了新架构重新构建产品
Shared-Nothing,多节点并发控制,分布式处理,利用复制实现容错,流式控制等技术架构
Google Spanner,H-Store,VoltDB等
采用Transparent Sharding中间件技术
数据分片(sharding)的过程对于用户来说是透明的(transparent),用户的应用程序不需要作出变化
OracleMySQL Proxy,MariaDBMaxSacle等
DAAS(Database-as-a-Service, 数据库即服务)
云服务商提供的数据库产品,云服务商提供具备NewSQL特性的数据库产品
Amazon Aurora,阿里云的Oceanbase,腾讯云的CynosDB
云数据库
云数据库是指被优化或部署到一个虚拟计算环境中的数据库
传统数据库VS 云数据库(1)
视图
传统数据库VS 云数据库(2)
视图
关系型数据库架构
数据库架构发展
视图
单机架构
单机架构
为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式,把应用和数据服务分开。应用服务可以增加服务器数量,进行负载均衡,增大系统并发能力
优点
部署集中,运维方便
缺点
可扩展性
数据库单机架构扩展性只有纵向扩展(Scale-up)。通过增加硬件配置来提升性能,但单台主机的硬件可配置的资源会遇到上限
存在单点故障
扩容的时候往往需要停机扩容,服务停止
硬件故障导致整个服务不可用,甚至数据丢失
单机会遇到性能瓶颈
分组架构
主备
主备机架构
数据库部署在两台服务器,其中承担数据读写服务的服务器称为“主机”
另外一台服务器利用数据同步机制把主机的数据复制过来,称为“备机”
同一时刻,只有一台服务器对外提供数据服务
优点
应用不需要针对数据库故障来增加开发量
相对单机架构提升了数据容错性
缺点
资源浪费,备机和主机同等配置,但长期范围内基本上资源限制,无法利用
性能压力还是集中在单机上,无法解决性能瓶颈问题
当出现故障时候,主备机切换需要一定的人工干预或者监控
主从
主从式架构
部署模式和主备机模式相似,备机(Backup)上升为从机(Slave),对外提供一定的数据服务
通过读写分离方式分散压力
写入、修改、删除操作,在写库(主机)上完成
把查询请求,分配到读库(从机)
优点
提升资源利用率,适合读多写少的应用场景
在大并发读的使用场景,可以使用负载均衡在多个从机间进行平衡
从机的扩展性比较灵活,扩容操作不会影响到业务进行
缺点
延迟问题,数据同步到从机数据库时会有延迟,所以应用必须能够容忍短暂的不一致性;对于一致性要求非常高的场景是不适合的
写操作的性能压力还是集中在主机上
主机出现故障,需要实现主从切换,人工干预需要响应时间,自动切换复杂度较高
多主
多主架构
数据库服务器互为主从,同时对外提供完整的数据服务
优点
资源利用率较高的同时降低了单点故障的风险
缺点
双主机都接受写数据,要实现数据双向同步。双向复制同样会带来延迟问题,极端情况下有可能数据丢失
数据库数量增加会导致数据同步问题变得极为复杂,实际应用中多见双机模式
共享存储多活架构
共享存储的多活架构(Shared-Disk)
一种特殊的多主架构
数据库服务器共享数据存储,而多个服务器实现均衡负载
优点
多个计算服务器提供高可用服务,提供了高级别的可用性。可伸缩性,避免了服务器集群的单点故障问题
比较方便的横向扩展能够增加整体系统并行处理能力
缺点
实现技术难度大
分片(Sharding)架构
分片架构主要表现形式就是水平数据分片架构
把数据分散在多个节点上的分片方案,每一个分片包括数据库的一部分,称为一个shard
多个节点都拥有相同的数据库结构,但不同分片的数据之间没有交集,所有分区数据的并集构成数据总体
常见的分片算法有:根据列表值,范围取值和Hash值进行数据分片
优点
数据分散在集群内的各个节点上,所有节点可以独立性工作
无共享(Shared-Nothing)架构
无共享架构
集群中每一个节点(处理单元)都完全拥有自己独立的CPU/内存/存储,不存在共享资源
各节点(处理单元)处理自己本地的数据,处理结果可以向上层汇总或者通过通信协议在节点间流转
节点是相互独立的,扩展能力强。整个集群拥有强大的并行处理能力
MPP架构(Massively Parallel Processing)
MPP:大规模并行处理(MassivelyParallelProcessing)
MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果
特征
任务并行执行,分布式计算
常见的MPP产品
无共享Master:Vertica,Teradata
共享Master:Greenplum,Netezza
数据库架构特点对比
关系型数据库主流应用场景
联机事务处理(OnLineTransaction Processing)
OLTP是传统关系数据库的主要应用
面向基本的,日常的事务处理,例如银行储蓄业务的存取交易,转账交易等
特点
大吞吐量:大量的短在线事务(插入、更新、删除),非常快速的查询处理
高并发,(准)实时响应
典型的OLTP场景
零售系统
金融交易系统
火车票销售系统
秒杀活动
联机分析处理(OnLineAnalytical Processing)
OLAP
联机分析处理的概念最早是E.F.Codd于1993年相对于OLTP系统而提出的
是指对数据的查询和分析操作,通常对大量的历史数据查询和分析。涉及到的历史周期比较长,数据量大,在不同层级上的汇总,聚合操作使得事务处理操作比较复杂
特点
主要面向侧重于复杂查询,回答一些“战略性”的问题
数据处理方面聚焦于数据的聚合,汇总,分组计算,窗口计算等“分析型”数据加工和操作
从多维度去使用和分析数据
典型的OLAP场景
报表系统,CRM系统
金融风险预测预警系统、反洗钱系统
数据集市,数据仓库
OLTP和OLAP对比分析
数据库性能衡量指标
TPC(TransactionProcessingPerformanceCouncil,事务处理性能委员会)
职责是制定商务应用基准测试标准(Benchmark)的规范、性能和价格度量,并管理测试结果的发布
制定的是标准规范而不是代码,任何厂家依据规范最优地构造自己系统进行评测
推出了很多基准测试标准,其中针对OLTP和OLAP分别有两个规范
TPC-C规范
面向OLTP系统,主要包括两个指标
流量指标:tpmC(tpm–transactions per minuete, 即每分钟测试系统处理的事务数量)
性价比指标:Price(测试系统价格)/tmpC
TPC-H规范
面向OLAP类系统
面向OLAP类系统
流量指标:qphH–Query per hour,即每小时处理的复杂查询数量
需要考虑测试数据集合大小,分为不同的测试数据集,指定了22个查询语句,可以根据产品微调
测试场景:数据加载,Power能力测试和Througput测试
数据库基础知识
数据库管理简介
数据库管理及其工作范围
数据库管理(Database Admin)
数据库管理
数据库管理工作就是对数据库管理系统进行管理和维护的工作
核心目标,保证数据库管理系统的
稳定性
安全性
数据一致性
系统的高性能
数据库管理员(DatabaseAdministrator)
从事管理和维护数据库管理系统的相关人员的统称
数据库管理工作范围
数据库对象管理
物理设计工作
物理实现工作
数据库安全管理
防止未授权访问,避免受保护的信息泄露
防止安全漏洞和不当的数据修改
确保数据只提供给授权用户使用
备份恢复管理
制定合理的备份策略,实现数据定期备份功能
保证灾难发生时数据库系统能够做到最快恢复和最小损失
数据库性能管理
对影响数据库性能的因素进行监控和优化
对数据库能使用的资源进行优化,从而增加系统吞吐量,并减少竞争,最大可能地处理工作负载
数据库环境管理
数据库的运行和维护管理,包括安装,配置,升级,迁移等
确保数据库系统在内的IT基础设施的正常运作
对象管理
什么是数据库对象
数据库里用来存储和指向数据的各种概念和结构的总称
对象管理就是使用对象定义语言或者工具创建,修改或删除各种数据库对象的管理过程
常见的基本数据库对象
制定数据库对象命名规范
备份恢复管理
数据库备份
备份数据库就是将数据库中的数据,以及保证数据库系统正常运行的有关信息保存起来,以备系统出现故障后恢复数据库时使用
备份对象,包括但不限于
数据本身
和数据相关的数据库对象
用户及权限
数据库环境,如配置文件,定时任务等
数据库恢复
将数据库系统从故障或者瘫痪状态恢复到可正常运行,并能够将数据恢复到可接受状态的活动
灾难恢复
企业级容灾
对于企业和单位来说,数据库系统和其他应用系统构成更大的信息系统平台,所以数据库备份恢复并不是孤立的功能点,要和其它应用系统一并考虑整个信息系统平台的容灾性能
灾难备份
为了灾难恢复而对数据、数据处理系统、网络系统、基础设施、专业技术能力和运行管理能力进行备份的过程
恢复时间目标(RTO)
灾难发生后,信息系统或业务功能从停顿到必须恢复的时间要求
恢复点目标(RPO)
灾难发生后,系统和数据必须恢复到的时间点要求
灾难恢复等级
某行业RTO/RPO与灾难恢复能力等级关系
备份方式
根据备份的数据集合的范围
全量备份
全量备份
也称为完全备份
对某个指定时间点的所有数据和对应的结构进行一个完全的备份
特点
数据最完备
安全性最高
备份和恢复时间随着数据的体量而明显增加
非常重要,是差异备份和增量备份的基础
备份期间会对系统性能产生一定影响
差异备份
差异备份是指上一次全量备份之后,对发生变化的数据进行的备份
增量备份
增量备份是指上一次备份之后,对发生变化的数据进行的备份
对比图
根据是否停用数据库
热备
在数据库正常运行下进行备份
备份期间,数据库读写均可正常进行
温备
数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作
冷备
在备份期间,应用的读写操作不可进行
备份出的数据可靠性最高
根据备份内容
物理备份
直接备份数据库所对应的数据文件甚至是整个磁盘
逻辑备份
将数据从数据库中导出,并将导出的数据进行存档备份
对比图
安全管理
数据库系统安全框架
广义范围,数据库安全框架可以分为三个层次
网络层次安全
从技术角度讲,网络系统层次安全方法技术主要有加密技术,数字签名技术,防火墙技术和入侵检测技术等
操作系统层次安全
核心是要保证服务器的安全,主要体现在服务器的用户账户,口令,访问权限等方面
数据安全主要体现在加密技术、数据存储的安全性,数据传输的安全性等方面,如Kerberos,IPsec,SSL和VPN等技术
数据管理系统层次安全
数据库加密
数据存取访问控制
安全审计
数据备份
分支主题
安全控制模型
安全控制
在数据库应用系统的不同层次提供对有意和无意损害行为的安全防范,例如:
加密存取数据-> 有意非法活动
用户身份验证,限制操作权限-> 有意的非法操作
提高系统可靠性和数据备份-> 无意的损害行为
安全控制模型
分支主题
身份验证
数据库用户的身份验证是DBMS提供的最外层安全保护措施
阻止未经授权的用户的访问
对于数据库应用目前普遍采用用户名密码验证模式,所以有必要增强密码强度
采用长度较长的字符串,如8-20个字符
混合数字,字母和符号的密码
定期更换密码
密码不能重复使用
在开发的代码或者脚本中,禁止出现数据库用户的密码明文
访问控制
访问控制是数据库安全中最有效的办法也是最容易出问题的地方
基本原则
对于不同用户根据敏感数据的分类要求,给予不同的权限
最小权限原则
检查关键权限
检查关键数据库对象的权限
基于角色的权限管理
对于大型数据库系统或者用户数量多的系统,权限管理主要使用基于角色的访问控制(Role Based Access Control,RBAC)
开启审计
审计可以帮助数据库管理员发现现存架构和使用中的漏洞
数据库审计的层次
访问及身份验证审计,数据库用户登入(logon),登出(logoff)的相关信息,如登入登出时间,连接方式及参数信息,登入途径等
用户与管理员审计:针对用户和管理员执行的活动进行分析和报告
安全活动监控:记录数据库中任何未授权或者可疑的活动生成审计报告
漏洞与威胁审计:发现数据库可能存在的漏洞,以及想要利用这些漏洞的“用户”
数据库加密
数据库加密的不同层次
DBMS内核层
数据在物理存取之前完成加/解密工作
对于数据库用户来说是透明的,没有感觉的
采用加密存储,加密运算在服务器端运行,在一定程度上会加重服务器的负载
DBMS外层加密
开发专门的加解密工具,或者定义加解密方法
可以控制加密对象粒度,到表或者字段级别进行加解密
用户只需要关注敏感信息范围
性能管理
资源
供给类资源
这类资源也称为基础资源,是计算机硬件对应的资源
操作系统管理的资源
处理能力:CPU>内存>>磁盘≈网络
并发性控制资源
这类资源包括但不限于:锁,队列,缓存,互斥信号等
数据库系统管理的资源
性能管理的基本原则
充分利用资源不浪费
性能管理的意义
资源的高效使用
数据库实际上总是在有限的环境下运行
对资源的有效管理确保数据库系统在高峰时期能够满足用户对系统的性能要求
侦测系统问题
实时的系统性能监控(通过数据库提供的日志或者工具进行实时监控系统性能)
系统历史性能数据跟踪(历史性能数据的分析)
容量规划
性能管理所收集到的数据是进行系统容量规划及其他前瞻性规划的基础
用事实而不是感觉说话
性能管理的目标
数据库系统的基本指标
吞吐量
响应时间
OLTP
在可接受的响应时间基础之上提供尽可能高的吞吐量
降低单位资源消耗,快速通过并发共享区域,减少瓶颈制约
OLAP
在有限的资源内尽可能地缩短响应时间
一个事务应该充分利用资源来加速处理时间
性能优化工作的一些场景
上线优化或未达到性能期望的性能优化
响应速度逐渐变慢的系统优化
系统运行过程中突然变慢的系统优化(应急处理)
突然变慢,持续一段时间以后又恢复正常
基于降低资源消耗的系统优化
预防性的日常巡检工作
性能管理需要采集的数据
性能管理需要采集的数据范围,包括但不限于
CPU使用数据
空间使用率
使用数据库系统的用户和角色
心跳查询的响应时间
提交到数据库的SQL为基本单元的性能数据
数据库工具提交的作业相关的性能数据(如加载,卸载,备份,恢复等)
关注的时间范围
日常范围:一周高峰时段的时间;月度结束的时间;季节变化数据
一天范围内:用户集中使用系统的时间段;系统压力比较高的时间段等
建立性能报表
数据库系统内置很多监控报表
提取性能相关的数据建立定期性能报表(日报,周报,月报)
建立常见指标的性能趋势分析报表,可以对当前系统性能有直观的展现
特定趋势类型的报表,包括但不限于
基于异常事件的报表
消耗大量资源的SQL或是作业
特定用户、用户群的资源消耗报表
特定应用的资源消耗报表
运维管理
数据库安装
数据库卸载
数据库迁移
需要依据不同的迁移场景需求设计迁移方案
考虑的要素
迁移可用的时间窗口
迁移可以使用的工具
迁移过程中数据源系统是否停止写入操作
迁移过程的数据源系统和目标系统之间的网络情况如何
根据迁移的数据量估算备份/恢复时间
迁移后,源和目标数据库系统之间的数据一致性稽核
数据库扩容
任何一个数据库系统的容量都是在某个时间点的基础上对未来一段时间内的数据量进行估算后确定的,容量不仅仅是数据存储量,还需要考虑以下几个方面
计算能力不足(整个系统CPU日均繁忙程度>90%)
响应/并发能力不足(QPS,TPS显著下降,无法满足SLA)
数据容量不足(可用的数据空间低于15%)
扩容方案的选择
垂直扩容
垂直扩容是增加数据库服务器硬件,如增加内存,增大存储,提升网络带宽,提升单机硬件方面性能配置。这种方式相对简单,但是会遭遇单机硬件性能瓶颈
水平扩容
横向增加服务器数量,利用集群中服务器数量的优势来增加整体系统的性能
停机扩容
简单,但是时间窗口有限,出现问题会导致扩容失败。而且如果时间过长,不易被客户接受
平滑扩容
对数据库服务无影响
技术方案相对复杂,尤其数据库服务器数量增多,扩容复杂程度就急剧上升
例行维护工作
数据库故障处理
配置数据库监控指标和告警阈值
针对故障事件的等级设置告警通知流程
接受告警信息后,根据日志进行故障定位
对于遇到的问题,应详细记录原始信息
严格遵守操作规程和行业安全规程
对于重大操作,在操作前要确认操作可行性,做好相应的备份、应急和安全措施后,由有权限的操作人员执行
数据库健康巡检
查看健康检查任务
管理健康检查报告
修改健康检查配置
数据库重要概念
数据库和数据库实例
数据库(Database)
物理操作系统文件或磁盘数据块的集合
比如数据文件,索引文件,结构文件
并非所有的数据库系统都是基于文件的,也有直接把数据写入数据存储的形式
数据库实例(DatabaseInstance)
实例指的就是操作系统中一系列的进程以及为这些进程所分配的内存块
数据库实例是访问数据库的通道
通常来说一个数据库实例对应一个数据库
利用多实例操作,可以更充分的利用硬件资源,让服务器性能最大化
分布式集群
集群就是一组相互独立的服务器,通过高速的网络组成一个计算机系统
分布式集群中,每个服务器都可能有数据库的一份完整副本,或者部分副本,所有服务器通过网络互相连接,共同组成一个完整的、全局的,逻辑上集中、物理上分布的大型数据库
数据库连接和会话
数据库连接(Connection)
物理层面的通信连接,指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或调度器(Shared Server)的一个网络连接
建立连接时候指定连接参数,如服务器主机名或ip,端口号,连接用户名和口令等
数据库会话(Session)
客户端和数据库之间通信的逻辑概念
通信双方从开始通信到通信结束期间的一个上下文(Context)。这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器、对应的应用程序进程号、对应的用户登录等信息
数据库连接池
建立数据库连接是有代价的
频繁的建立和关闭数据库连接,会使得对连接资源的分配和释放成为数据库的瓶颈,从而降低数据库系统的性能
连接池:数据库连接的复用
负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
数据库连接可以得到高效、安全的复用
Schema
Schema是数据库形式语言描述的一种结构,是对象的集合
允许多个用户使用一个数据库而不干扰其他用户
把数据库对象组织成逻辑组,让他们更便于管理
形成命名空间,避免对象的名字冲突
schema包含表及其他数据库对象,数据类型、函数、操作符等
表空间(Tablespace)
表空间是由一个或者多个数据文件组成的
通过表空间定义数据库对象文件的存放位置
数据库中所有对象在逻辑上都存放在表空间中
在物理上储存在表空间所属的数据文件中
表空间作用
根据数据库对象使用模式安排数据物理存放位置,提高性能
频繁使用的索引放置在性能稳定且运算速度快的磁盘上
归档数据,使用频率低,对访问性能要求低的表存放在速度慢的磁盘上
通过表空间指定数据占用的物理磁盘空间
通过表空间限制物理空间使用上限,避免磁盘空间被耗尽
表(Table)
临时表
表的存储方式
存储方式的选择
列存适合的场景
统计分析类查询(group,join多的场景)
适合OLAP,数据挖掘等大量查询的应用查询
行存适合的场景
点查询(返回记录少,基于索引的简单查询)
适合OLTP,这种轻量级事务,大量写操作,数据增删改比较多的场景
分区(Partition)
分区表是将大表的数据分成许多小的数据子集,称为分区
范围分区表
列表分区表
哈希分区表
间隔分区表
分区表的收益
改善查询性能
增强可用性
方便维护
均衡I/O
分区剪枝的原理
分区剪枝
对分区对象的查询可以仅搜索自己关心的分区,提高检索效率
分区适用场景
数据分布
数据策略选择
分布列选择原则
数据类型
字段设计建议
尽量使用高效数据类型
尽量使用执行效率比较高的数据类型
尽量使用短字段的数据类型
使用一致的数据类型
当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型
对于字符串数据,建议使用变长字符串数据类型,并指定最大长度
视图(View)
视图与基本表不同,不是物理上实际存在的,是一个虚表
视图的作用
视图作用
简化操作,把经常使用的数据定义为视图
安全性,用户只能查询和修改能看到的数据
逻辑上的独立性,屏蔽了真实表的结构带来的影响
限制性
性能问题:查询可能很简单,但是封装的视图语句很复杂
修改限制:对于复杂视图,用户不能通过视图修改基表数据
索引(Index)
索引提供指向存储在表的指定列中的数据值的指针,如同图书的目录,能够加快表的查询速度,但同时也增加了插入、更新和删除操作的处理时间
在创建索引时,以下建议作为参考
在经常需要搜索查询的列上创建索引,可以加快搜索的速度
在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的
在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间
在经常使用WHERE子句的列上创建索引,加快条件的判断速度
为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引
有效索引
创建索引≠索引一定被使用
索引创建成功后,系统会自动判断何时引用索引。当系统认为使用索引比顺序扫描更快时,就会使用索引
索引创建成功后,必须和表保持同步以保证能够准确地找到新数据,这样就增加了数据操作的负荷
需要定期删除无用的索引
判断方法
通过执行explain语句查看执行计划来判断是否使用索引
索引方式
约束
数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束
完整性约束是一种规则,本身不占用数据库空间
完整性约束和表结构定义一起保存在数据字典中
常见的约束类型
唯一性和主键约束(UNIQUE/PRIMARY KEY)
外键约束(FOREIGN KEY)
检查约束(CHECK)
非空约束(NOT NULL)
默认约束(DEFAULT)
分支主题
数据库对象间关系
事务(Transaction)
事务
事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元执行
原子性(Atomicity):事务是数据库的逻辑工作单位,事务中的操作,要么都做,要么都不做
一致性(Consistency):事务的执行结果必须是使数据库从一个一致性状态转到另一个一致性状态
隔离性(Isolation):数据库中一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他事务是隔离的,并发执行的各个事务不能相互干扰
持久性(Durability):事务一旦提交,对数据库中数据的改变是永久的。提交后的操作或者故障不会对事务的操作结果产生任何影响
事务结束的标记有两个
正常结束,COMMIT(提交事务)
异常结束,ROLLBACK(回滚事务)
事务处理模型
提交级别
事务隔离级别
事务隔离级别与问题对应表
分支主题