偶数课程学习
--magam
Magma 的功能,主要包括数据分布、数据清理、事务模型、索引、数据副本、负载均衡。
Magma 作为存储,Magma 存储的数据是表数据,是结构化数据,
Magma 支持对表数据做更新和删除操作。
通过 Raft 的协议数据复制来实现的。
它的事务特性是通过多版本来实现的。
性能的是通过?列混合的存储格式来?持 OLAP?性能查询。
它提供了数据索引功能,可以建?主键索引和?主键索引。
作为分布式的存储,它整合数据预处理技术,提供了便捷的集群扩展、集群容错以及负载均衡。
偶数命令:
命令检测 oushudb state
SQL 检测
SELECT * FROM gp_segment_configuration; 我们可以通过这条命令所查询的表来查看节点的状态
数据库连接数检查
select count(1) from pg_stat_activity ; 来查看当前正在活跃任务的情况
select count(1) from pg_stat_activity where current_query<>'' and procpid<>pg_backend_pid();
启动/停 OushuDB
source /usr/local/hawq/greenplum_path.sh # 设置 OushuDB 环境变量
oushudb start cluster # 启动整个 OushuDB 集群
oushudb start master # 启动 master,指的是启动本地 master
oushudb start segment # 启动 segment,指的是启动本地 segment
---虚拟集群(Virtual Cluster)
虚拟集群是若干个 Segment 的集合
每个虚拟集群都是彼此互斥的集合
每个虚拟集群只管理其内部的 Segment 资源
每个虚拟集群会维护其内部的资源队列
每个虚拟集群拥有个性化属性(VCProperty)
所有虚拟集群的信息全部持久化存储在元数据表 pg_vcluster 中
虚拟集群创建
CREATE VCLUSTER vcname WITH(segments='域名' | segmentfile='文件地址' [,
vcproperty=value]);
虚拟集群删除
DROP VCLUSTER vcname [ IF EXISTS vcname];
ALTER VCLUSTER vcname WITH(segments='域名' | segmentfile='文件地址');
ALTER VCLUSTER vcname WITHOUT(segments='域名' | segmentfile='文件地址');
查看虚拟集群信息
SELECT * FROM pg_vcluster;
检查集群节点状态 : 查询 gp_segment_configuration,检查 Segment(注册的 role 为’p’的节点)的 status 是否为‘u’, 检查注册的 Segmet 数量是否符合期待。
---事务
事务(TRANSACTION)是数据库管理系统执行过程中的一个工作单元,由一个或多个数据库操作序列构成。
数据库事务会包含了一个序列的对数据库的读/写操作,包含有以下两个目的:
1.为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态
下仍能保持一致性的方法。
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的
操作互相干扰。
事务特点:
事务必须具有以下四个标准属性,通常根据首字母缩写为 ACID
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执
行,要么都不执行。
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致
状态的含义是数据库中的数据应满足完整性约束。
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
---锁
数据库中有两种基本的锁:排它锁(Exclusive Locks)和共享锁(Share Locks)。
如果数据对象加上排它锁,则其他的事务不能对它读取和修改。
如果加上共享锁,则该数据库对象可以被其他事务读取,但不能修改。
锁定模式:ACCESS SHARE,ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE,SHARE ROW EXCLUSIVE,EXCLUSIVE,ACCESS EXCLUSIVE。
LOCK TABLE department1 IN ACCESS EXCLUSIVE MODE;
--集群状态检查
SELECT * FROM gp_segment_configuration;
m:Master 节点
p:Segment 节点
s:Standby 节点
status 列表示此节点的健康状况
u:up
d:down
--队列
检查资源队列定义:查询 pg_resqueue,可得到每个资源队列的定义和之间构成的树结构。
select * from pg_resqueue
检查资源队列状态:查询 pg_resqueue_status,可得到每个资源队列的实际使?状况。
select * from pg_resqueue_status
--认证方式
以口令为基础的认证方法包括 md5,crypt 和 password
--用户和角色
create role db_role1; /--创建角色/
drop role db_role1; /--删除角色/
select rolename from pg_roles; /--查看所有角色/
/du --在命令格式下查看所有角色的命令
create role db_role1 LOGIN; --创建具有登录权限的角色 db_role1
create role db_role2 SUPERUSER; --创建具有超级用户权限的角色
create role db_role3 CREATEDB; --创建具有创建数据库权限的角色
create role db_role4 CREATEROLE --创建具有创建角色权限的角色
alter role db_role1 nologin nocreatedb; --修改角色取消登录和创建数据库权限
create user db_user1 password '123'; --创建用户
create role db_user1 password '123' LOGIN; --同上一句等价
drop user db_user1; --删除用户
alter user db_user1 password '123456'; --修改密码
alter user db_user1 createdb createrole; --对用户授权
create user db_user1; --创建用户 1
create user db_user2; --创建用户 2
create role db_role1 createdb createrole; --创建角色 1
grant db_role1 to db_user1,db_user2; --给用户 1,2 赋予角色 1,两个用户就拥有了创建数据库和创建角色的权限
revoke db_role1 from db_user1; --从用户 1 移除角色 1,用户不在拥有角色 1 的权限
角色能够创建其他角色和新的数据库
ALTER ROLE name CREATEROLE CREATEDB;
更改一个角色的口令:
ALTER ROLE name WITH PASSWORD 'newpassword';
移除一个角色的口令
ALTER ROLE name WITH PASSWORD NULL;
使用 GRANT 命令。如果 fred 是一个已经存在的用户,而 department 是一个已经存在
的表,可以用下面的命令更新表的权限:
GRANT UPDATE ON department TO fred;
REVOKE 命令撤销权限:
REVOKE ALL ON accounts FROM PUBLIC;