在PostgreSQL中不使用NULL仍然在标题中使用NULL位图?
显然PostgreSQL在
header of each database row中存储了几个值.
如果我不在该表中使用NULL值 – 那么空位图还在吗?
实际上比这更复杂.
空位图在行中每列需要一位,舍入到全部字节.只有在实际的行包含至少一个NULL值并且在这种情况下才被完全分配的情况下才是这样. NOT NULL约束不直接影响. (当然,如果你的表的所有字段都不为空,则永远不能有一个空位图.) “堆元组头”(每行)长23个字节.实际数据以MAXALIGN的倍数开始,在64位操作系统上通常为8个字节(32位操作系统上为4个字节).以root用户身份从PostgreSQL二进制目录中运行以下命令,以获得确定的答案: ./pg_controldata /path/to/my/dbcluster 在Postgres 9.3的典型Debian安装中,将是: sudo /usr/lib/postgresql/9.3/bin/pg_controldata /var/lib/postgresql/9.3/main 无论哪种方式,头部和数据的对齐开始之间都有一个空闲字节,这是空位图可以利用的.只要您的表具有8列或更少的列,空存储就可以绝对免费(就磁盘空间而言). 之后,另一个MAXALIGN(通常为8个字节)被分配用于空位图(加上填充)以覆盖另外(通常)64个字段.等等. 这对于至少版本8.4 – 9.6有效,并且很有可能不会改变. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 在Rails中,我应该启用serve_static_asset
- objective-c – 类扩展中的静态变量和变量有什??么不同?
- reactjs – 如何设置react-dom / server renderToString传递
- Swift,任重而道远!
- React+ES6+Less+Bootstrap----webpack初探
- 为React Native开发写的JS和React入门知识
- ruby-on-rails-3 – Rails回形针和倒置的图像
- objective-c – 在OS X中使用NSTask在特定用户下运行“laun
- cocos2dx 为什么可以跨平台?
- <(\S*?)[^>]*>.*?</&#