数据库:操作系统文件或磁盘数据块的集合
数据库实例: 指操作系统中一系列进程以及为这些进程分配的内存块
通常来说一个数据库实例对应着一个数据库【数据库实例是访问数据的通道】
多实例:利用多实例 可以充分利用硬件资源 让服务器性能最大化
数据库连接和会话
数据库连接: 物理层面的通信连接,指的是一个通过网络建立客户端和专有服务器或调度器的网络连接
数据库会话: 客户端和数据库之间通讯的逻辑概念 上下文:位于服务器端 记录了本次连接客户端机器的IP地址 端口 进程等用户信息
数据库连接池
建立连接是有代价的:频繁的建立和关闭连接 会降低性能 使连接资源的释放和建立成为瓶颈
连接池:数据库连接的复用 允许应用程序重复使用现有的数据库连接 而不是创建新的
Schema是数据库 对象的集合
把数据库对象组成逻辑组 ,便于管理,
允许多个用户使用一个数据库 相互间不影响
形成命名空间 避免对象名冲突
包含数据库,对象数据类型 函数 操作符等
表空间 tablespace 由一个或者多个数据文件组成
#创建表空间 表空间满128M 自动扩展
create tablespace human_resouce datafile '/data/humanspace' size 128M autoextend on next 128M ;
表空间作用:根据数据对象使用模式安排数据物理存放位置 提高性能
通过表空间指定数据占用物理磁盘空间
create table eduttion(stff_id int,grate_school varchar(64) ) tablespcae human_resource #指定表空间
表:二维数组集合
行存储 适用于OLTP便于点查询 只需要查询所需要列信息便于大量写操作
列存储 适用于OLAP 便于分析类查询
临时表:会话临时表 事务级临时表
临时表为了存储临时会话或者 一个事务中需要的数据
当会话退出的时候 数据会清空但是表结构仍然存在
create global temporary table tablename{,,,,,,} 临时表关键词
on commit preserve rows;# 会话级临时表
on commit delete rows ; # 事务级临时表
nologing表 示指nologing关键字或者nologing表空间
nologing表不记录redo日志 redo记录修改后的数据 undo记录修改前的数据
1、日志量减少提高数据写性能
2、没有redo日志 数据库重启后无法重演恢复
3、适用于可靠性不是特别高的数据
分区 改善查询 增强可用性 增强维护
数据分布
GaussDB 100 数据分布是分散在所有DN上的 所以创建表时 需要指定分布列
create table student(id int,name char(8)) distribute by hash|replicatiton|List |Range
1、Hash 通过Hash算法分布
2、replication 每个DN都有一份全量
3、list 表数据通过list方式分布DN节点上
4、Range 通过range方式分布
视图 不保存数据 虚拟表 create view as selecr * from table 安全 便于查询
索引 explain 查看是否使用索引
唯一索引 多字段索引 部分索引 表达式索引
约束
not null 非空 ,unique/primary key 主键 ,foreign key 外键 ,check 检查约束 ,default 默认
事务
失败:rollback 回滚
成功: commit 提交事务
ACID 原子性 一致性 隔离性 持久性
数据不一致 1、脏读 事务二读取到事务一未提交的数据 2、不可重复读 3、幻影读
事务隔离级别 避免数据不一致的问题
1、序列化 串行方式逐个执行 缺点:并发下降
2、可重复读 事务开始 不允许其他事务修改
3、已提交读
4、未提交读
思考