我正在开发一个新的应用程序,它将数据存储在PostgreSQL数据库中。其他数据中的数据类型是来自某些测量设备的仪表记录。每个客户可以有数百个这样的设备,并且通常每天都提供少量记录。较新的记录只需删除较旧的记录即可替换旧的记录,并作为具有新ID的新记录插入。我公司不知道的是,有多少客户每天需要存储多少测量设备和记录。
由于这是一个新的应用程序,我想询问您关于使用serial与bigserial作为仪表记录的ID的建议。当前的x64 CPU是否有任何明显的性能下降? id字段的存储应该增加2倍,对吧?任何明显的理由都不使用bigserial?
谢谢!
答案 0 :(得分:2)
就性能而言,没有区别 - 假设已经正确编译PostgreSQL以利用x86_64平台。例如,添加两个32位整数与添加64位整数的时间相同。但是,如果它是为普通的x86(32位)编译的,那么性能会有一些(边际?)下降,因为它只需要使用32位寄存器来模拟64位算法。
简而言之:确保使用64位版本的PostgreSQL,你应该好好去!
答案 1 :(得分:1)
bigserial
数据类型作为表的序列和主键没有明显的性能问题。有关详细信息,请参阅documentation和older question about subject。
顺便说一句:如果你有10000个设备,每个设备每天产生10条记录,那么整数足够60年,所以我认为整数就够了; - )