如果JSONField达到最大存储限制会发生什么?

时间:2017-04-28 10:01:08

标签: python django postgresql

对于有经验的(Django)开发人员来说,这可能是一个简单的问题。

我的项目数据库是PostgreSQL。

我打算使用单个受保护的模型实例作为某些数据的集中存储。该实例将有一个JSONField,它将依次存储键值对的动态集合(两者都是字符串)。 “动态”是指新的键值对将不时添加到集合中,因此集合的大小将不断增加。

据我所读(例如Size limit of JSON data type in PostgreSQL),JSONField的大小限制约为1GB。这是相当多的,但仍然不是无限的。

我的问题是:如果我设法耗尽JSONField的存储容量,究竟会发生什么?有没有关于如何预测这种情况的建议(例如监控实例的存储大小)?

2 个答案:

答案 0 :(得分:2)

由于您不打算在数据库中操作JSON值,因此应使用数据类型json而不是jsonb

如果超出该限制,您将收到错误消息。但由于整个值暂时必须保存在客户端和数据库端的RAM中,我希望你在此之前遇到问题 - 你可能会从数据库中获得内存不足的消息,或者性能可能真的很糟糕。

如果要在数据库中存储的状态超过1GB,最好将其拆分为多个部分,并仅更新那些真正发生更改的部分,就像通常在关系数据库中那样。

答案 1 :(得分:1)