英文:
How to use Postgresql's "real" (float4) type in Rails 7.0, instead of the "double precision"?
问题
我有一个连接到Postgres数据库的Rails 7.0应用程序。
我有几百万行的表,每行存储超过10个列作为浮点类型。
Rails中存储带有小数的数字的默认方式是浮点类型,它对应于Postgres中的float8类型(也称为双精度),这意味着存储为此类型的每个值都是8字节的数据。
通过告诉Rails告诉Postgres使用float4(real)而不是float8,我可以节省很多空间。
基本上将数据库中最大表的大小减少一半。
唯一的问题是我真的不知道如何做,也似乎找不到任何线索。
有人试过这样做吗?
如果是这样的话,我接受关于迁移本身的任何建议,因为我还需要将现有条目切换为float4。
最好!
英文:
I've got a Rails 7.0 app connected to a Postgres Database.
I've got tables with several millions of rows, and each row storing more than 10 columns as float types.
The default way of storing numbers with decimals in Rails is the float type, which corresponds to the float8 type in Postgres (also known as double precision), meaning each value stored as this type is 8bytes of data.
I could save a lot of space by telling Rails, to tell Postgres, to use float4 (real) instead of float8.
Basically cutting in half the size of the biggest table of my database.
The only thing is that i really don't know how to and i don't seem to find any clue about it.
Has someone ever tried to do this ?
Also if that's the case, i take any recommendation regarding the migration itself as i need to switch the existing entries to float4 as well.
Best!
答案1
得分: 1
通过对迁移进行调整,找到了答案。
只需将浮点类型的数字更改为4,就可以实现如下所示:
def change
add_column :my_table, :my_column, :float4
end
在通过 psql 进行检查时,这将得到一个“real”列。
英文:
Found the answer by messing around with migrations.
It's as simple as adding a 4 to the float type like so:
def change
add_column :my_table, :my_column, :float4
end
This results in a 'real' column when checking through psql.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论