gpt4 book ai didi

java - H2、Sql-Server、MySql 中的二进制数据类型

转载 作者:行者123 更新时间:2023-11-30 22:27:26 25 4
gpt4 key购买 nike

我需要将序列化的 Object 作为二进制数据存储在 H2 表中(也在 MySql、SqlServer、Hsqldb 等中,因为应用程序有选择数据库的选项)。这个对象只有几个字节,它只是一个带有一些字符串、整数和 boolean 值的 POJO,没什么特别的。

我创建了 VARBINARY(1000) 列,使用 PreparedStatement 设置值并将其保存到表中。我的问题和担忧是,这段代码在网站上有效,当我在 H2 官方网站上阅读关于 BINARY 数据类型的定义时,他们说:

BINARY Type: Represents a byte array. For very long arrays, use BLOB. The maximum size is 2 GB, but the whole object is kept in memory when using this data type. The precision is a size constraint; only the actual data is persisted. For large text data BLOB or CLOB should be used.

让我担心的是他们说“但使用此数据类型时整个对象都保存在内存中”的语句。那么,这个对象实际上在内存中保留了多少时间?直到应用程序关闭?

我(显然)不想让这个专栏无休止地占用内存。我试图找到任何其他信息来源,但一无所获。

最佳答案

HSQLDB 和 MySQL 的最佳数据类型是 VARRBINARY(max_bytes_length)BINARY(fixed_bytes_length) 即使对于最小的已保存对象也占用相同的空间量,而 VARBINARY 恰好占用已保存对象的长度。 max_length 参数可以设置为比对象的最大预期大小大得多的值。使用这些数据库,只有在访问数据行时,该值才会保存在内存中。

关于java - H2、Sql-Server、MySql 中的二进制数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34802439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com