小编val*_*gog的帖子

PostgreSQL数据库大小(表空间大小)远大于计算的关系总和

你好,

我看到实际数据库大小(在HDD上和通过pg_database_size()调用显示)和大小之间存在很大差异,通过总结检索到的总关系大小来计算pg_total_relation_size().

第一个是62G,最后一个是16G(右边是最大表中已删除数据的差异)

这是一个简化的查询,可以显示我的系统上的差异:

select current_database(),
       pg_size_pretty( sum(total_relation_raw_size)::bigint ) as calculated_database_size,
       pg_size_pretty( pg_database_size(current_database()) ) as database_size   
  from (select pg_total_relation_size(relid) as total_relation_raw_size
          from pg_stat_all_tables -- this includes also system tables shared between databases
         where schemaname != 'pg_toast' 
       ) as stats;
Run Code Online (Sandbox Code Playgroud)

似乎那里有一些悬空数据.出现这种情况后,我们从该数据库中转储并完全抽空了大量未使用的数据.

PS:我想,这是某种类型的数据库损坏......从这种情况中恢复的唯一方法是切换到热备数据库......

postgresql

8
推荐指数
1
解决办法
7125
查看次数

词法分析器中的 ANTLR4 负前瞻

我正在尝试为 PostgreSQL SQL 定义词法分析器规则。

问题在于运算符定义和行注释相互冲突。

例如@---是一个操作符标记@-后跟--注释而不是一个操作符标记@---

grako有可能定义为负先行-样片段:

OP_MINUS: '-' ! ( '-' ) .
Run Code Online (Sandbox Code Playgroud)

在 ANTLR4 中,我找不到任何方法来回滚已经消耗的片段。

有任何想法吗?

这里的原始定义是什么 PostgreSQL 操作符可以是:

The operator name is a sequence of up to NAMEDATALEN-1
(63 by default) characters from the following list:

 + - * / < > = ~ ! @ # % ^ & | ` ?

There are a few restrictions on your choice of name:
-- and /* …
Run Code Online (Sandbox Code Playgroud)

antlr4

3
推荐指数
1
解决办法
2601
查看次数

标签 统计

antlr4 ×1

postgresql ×1