如果 Django postgresql 数据库中 char 字段的值为 null,则表中实际分配了多少空间?
Posted
技术标签:
【中文标题】如果 Django postgresql 数据库中 char 字段的值为 null,则表中实际分配了多少空间?【英文标题】:How much space will be actually allocated in a table if the value for char field is null in Django postgresql database? 【发布时间】:2020-11-30 07:03:38 【问题描述】:我在 Django 中使用 Postgresql 数据库。现在假设我有一个包含三个字段的模型(表):
class TempModel(models.Model):
url = models.CharField(_('Url'), blank=True, null=True, max_length=100)
file = models.FileField(_('File'), upload_to=custom_file_path, null=True, blank=True, max_length=1024)
order = models.IntegerField(_('Order'), blank=False, null=False)
现在,如果我没有在 URL 和文件字段中提供任何值,那么空值将存储在这些字段中。 null 占用大约 1 个字节的内存。但最大内存限制分别为 100 个字符和 1024 个字符。
所以我的疑问是,如果我不提供任何输入数据,将为 URL 和文件字段分配多少空间?数据库会不会有内存浪费?
【问题讨论】:
【参考方案1】:NULL 值不占用数据库中的任何存储空间。
如果一个表有可以为空的列,每个表行都有一个空位图,它表示哪些列是空的。当然这个位图会占用存储空间,但是不管有没有NULL值都会这样。
【讨论】:
那么如果我们不指定char字段的最大长度,PostgreSQL是否可以存储无限数量的字符? 限制为 1GB。以上是关于如果 Django postgresql 数据库中 char 字段的值为 null,则表中实际分配了多少空间?的主要内容,如果未能解决你的问题,请参考以下文章
Heroku Django Postgresql 数据库管理员,超级用户在哪里?
对于 django/PostgreSQL DB - 推荐的最大对象大小应该是多少?
如何在 Django 中使用 PostgreSQL 9.2 JSON 数据类型?
如何在 Django 应用程序中访问 PostgreSQL 数据库
django.contrib.gis.db.backends.postgis vs django.db.backends.postgresql_psycopg2