【问题标题】:MonetDB table statisticsMonetDB 表统计信息
【发布时间】:2015-04-14 22:22:18
【问题描述】:

以下是我的一张表的部分统计信息。我不确定如何理解宽度列。这些值是以字节为单位的吗?如果是这样,我知道 fnamelname 的 ascii 字符数高于 5 和 6,mname 中有一些 1 char long 值。

更新 1。 下面是select * from statistics 的输出。我只显示输出的前 5 列。

+--------+---------+------------------------+---------+-------+
| schema | table   | column                 | type    | width |
+========+=========+========================+=========+=======+
| abc    | targets | fname                  | varchar |     5 |
| abc    | targets | mname                  | varchar |     0 |
| abc    | targets | lname                  | varchar |     6 |

【问题讨论】:

  • 你从哪里得到这些静态数据?
  • @HannesMühleisen 我更新了问题,谢谢。

标签: monetdb


【解决方案1】:

width 列显示“原子数组的字节宽度”(在gdk.h 中定义)。然而,这并不是字符串列的全部情况,因为这里的原子数组只将偏移量存储到字符串堆中。

MonetDB 使用可变宽度列,因为如果不同的字符串值很少,64 位偏移量将浪费内存。因此,在您的情况下,fname 列需要 5 个字节或 40 位的字符串偏移量,lname 需要 6 个字节(48 位)。如果插入新值,这可能会改变。

mname 的零值很有趣,因为新列的宽度被初始化为 1。你用的是哪个版本?

【讨论】:

  • 我正在使用“MonetDB 数据库服务器 v1.7”
猜你喜欢
  • 2011-02-02
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2020-02-27
相关资源
最近更新 更多