循序渐进丨MogDB 百问百答(第4期)

5c7942a87424288513d667edfc162498.png

为了能够帮助大家循序渐进地了解MogDB、认识其特性和能力、熟悉它的使用,我们特推出「MogDB百问百答」连载,每期放出20个FAQ,希望能对您有参考价值!(感谢问题整理与回答人员:高云龙、彭冲、黄超、杨有田)

 往期回顾 

第一期 FAQ 1~20

第二期 FAQ 21~40

第三期 FAQ 41~60

  Q 61  

如何查看数据库当前正在执行的SQL?

可以通过pg_stat_activity视图查看当前正在执行的SQL、正在运行的事务以及事务执行完后未断开的连接。

  Q 62  

如何查看历史慢SQL?

在开启enable_resource_track参数的情况下,通过log_min_duration_statement控制慢SQL的阈值,超过阈值的SQL会记录到postgresql数据库下的statement_history表中。

  Q 63  

如何查看数据库执行的全量SQL?

可以通过打开参数log_statement来将数据库执行的所有SQL全部打印到数据库日志中。

  Q 64  

如何查看最近5分钟耗资源的wait event?

可以在数据库执行如下SQL:

SELECT s.type, s.event, t.count
FROM dbe_perf.wait_events s, (
SELECT event, COUNT (*)
FROM dbe_perf.local_active_session
WHERE sample_time > now() - interval '5min'
GROUP BY event)t WHERE s.event = t.event ORDER BY count DESC

  Q 65  

如何查看当前数据库锁阻塞信息?

可以通过如下SQL找到锁阻塞的详细信息:

with tl as (select usename,granted,locktag,query_start,query 
                    from pg_locks l,pg_stat_activity a 
                    where l.pid=a.pid and locktag in(select locktag from pg_locks where granted='f')) 
        select ts.usename locker_user,ts.query_start locker_query_start,ts.granted locker_granted,ts.query locker_query,tt.query locked_query,tt.query_start locked_query_start,tt.granted locked_granted,tt.usename locked_user,extract(epoch from now() - tt.query_start) as locked_times
        from (select * from tl where granted='t') as ts,(select * from tl where granted='f') tt 
        where ts.locktag=tt.locktag order by 1;

  Q 66  

如何查看数据库实例中慢SQL语句执行信息?

select * from dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp, end_timestamp);

例如: 

select * from DBE_PERF.get_global_slow_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41');

  Q 67  

MogDB支持哪些隔离级别?

隔离级别有四种,分别是未提交读、已提交读、可重复读及序列化,而MogDB目前支持READ COMMITTED和REPEATABLE READ两种,默认是已提交读。

  Q 68  

事务有几种状态?

事务状态有四种,分别是IN_PROGRESS事务正在进行中,COMMITTED事务已提交,ABORTED事务已中止和SUB_COMMITTED子事务。

  Q 69  

读已提交事务和可重复读事务会有哪些现象?

读已提交隔离级别事务可能出现不可重复度和幻读,而可重复读隔离级别事务可能出现不可重复读的现象。其中不可重复读指:一个事务重新读取之前读取过的数据,发现该数据已经被另一个事务(在初始读之后提交)修改;幻读指:一个事务重新执行一个返回符合一个搜索条件的行集合的查询, 发现满足条件的行集合因为另一个最近提交的事务而发生了改变。

  Q 70  

如何控制事务执行?

控制事务执行的命令有begin、START TRANSACTION、commit、end、rollback、savepoint 和 rollback to savepoint; 其中savepoint 和 rollback to savepoint 控制子事务。

  Q 71  

可以关闭事务自动提交功能么?

事务自动提交是客户端的一个选项,并不是数据库自身的特性,所以数据库本身是无法控制的,可以通过修改客户端的选项来决定是否开启事务自动提交。这里以gsql为例,连接数据库后可以执行\set autocommit off关闭此选项,关闭后再执行query后,需要手工执行commit/rollback来完成事务提交或回滚。

  Q 72  

数据库会话有几种状态?

共有6种状态,分别如下:

active: 后台正在执行一个查询;

idle: 后台正在等待一个新的客户端命令;

idle in transaction: 后台在事务中,但事务中没有语句在执行;

idle in transaction (aborted): 后台在事务中,但事务中有语句执行失败;

fastpath function call: 后台正在执行一个fast-path函数;

disabled: 如果后台禁用track_activities,则报告这个状态。

  Q 73  

什么是schema(模式),有什么作用?

schema在数据库里是一个逻辑集合,schema 之间的数据库对象是可以相互访问的,默认在数据库下会有一个public模式,自定义schema可以通过create schema 语法。

  Q 74  

public模式是否建议使用或是否可以强制删除?

public模式需要小心使用,注意控制安全,不建议强制删除,以免某些场景无可用schema而陷入的窘境。

  Q 75  

如何访问指定schema下的数据库对象? 

访问指定schema下的数据库对象有以下几种方法:

  1. 对象前面带 schema名称;

  2. 设置search_path;

  3. 连接时指定current_schema;

  4. 创建同义词。

  Q 76  

user 和 role 有什么区别?

user和role的唯一区别是user是具有login用户属性的,而role默认不带logins属性,可以通过alter role方式添加,在其他方面二者没有区别。

  Q 77  

用户属性有哪些?

用户属性包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN和LOGIN,这些属性是不可以被继承的,且只能通过alter user/role方式来修改。

  Q 78  

database的owner是否具有当前数据库下任意权限?

数据库的owner只是对数据库自身有操作权限,database下的schema还是可以有自己的所有者,database的owner并不能管理非owner下的schema对象。

  Q 79  

什么是三权分立?

默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。但为了避免系统管理员拥有过度集中的权利带来高风险,将系统管理员的部分权限分立给安全管理员和审计管理员,形成系统管理员、安全管理员和审计管理员三权分立,三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。

  Q 80  

数据库有全局只读用户么?

MogDB暂时没有全局只读用户,但是可以通过alter default privileges语法给未来数据库对象只读权限,从而达到只读用户的效果。

315eab4002a4acc451d5566d7e442566.jpeg

关注我们

回复关键词“MogDB

了解有关 MogDB 产品的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值