Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java H2、Sql Server、MySql中的二进制数据类型_Java_Mysql_Sql Server_H2_Hsqldb - Fatal编程技术网

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

Java H2、Sql Server、MySql中的二进制数据类型,java,mysql,sql-server,h2,hsqldb,Java,Mysql,Sql Server,H2,Hsqldb,我需要将序列化的对象作为二进制数据存储在H2表中(同样在MySql、SqlServer、Hsqldb等中,因为应用程序有选择数据库的选项)。这个对象只重几个字节,它只是一个带有一些字符串、整数和布尔值的POJO,没有什么特别之处 我创建VARBINARY(1000)列,用PreparedStatement设置值,并将其保存到表中。我的问题和我关心的是,这个代码在一个网站上工作,当我在H2官方网站上阅读关于BINARY数据类型的定义时,他们说: 二进制类型: 表示字节数组。对于非常长的数组,请使用

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

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

二进制类型: 表示字节数组。对于非常长的数组,请使用BLOB。最大值 大小为2GB,但使用此选项时,整个对象都保存在内存中 数据类型。精度是一个尺寸约束;只有实际数据是正确的 坚持。对于大型文本数据,应使用BLOB或CLOB

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


我(显然)不想让这篇专栏通过无限期地保留这篇专栏来消耗记忆。我试图找到任何其他信息源,但没有任何运气。

BLOB类型不会完全保留在内存中,因此如果您担心内存使用,您可以使用它。您到底存储了多少数据


H2是一个嵌入式数据库,我认为它不打算扩展到大量数据。如果您谈论的是其他数据库,您应该参考它们的文档以了解详细信息,因为它们不太可能以相同的方式运行。

BLOB类型不会完全保留在内存中,因此如果您担心内存使用,您可以使用它。您到底存储了多少数据


H2是一个嵌入式数据库,我认为它不打算扩展到大量数据。如果您正在谈论其他数据库,您应该参考它们的文档以了解详细信息,因为它们的行为不太可能相同。

HSQLDB和MySQL的最佳数据类型是
VARRBINARY(最大字节长度)
BINARY(固定字节长度)
即使对于最小的保存对象也占用相同的空间量,而
VARBINARY
正好占用保存对象的长度。“最大长度”参数可以设置为远大于对象最大预期大小的值。在这些数据库中,只有当访问数据行时,值才会保存在内存中。

HSQLDB和MySQL的最佳数据类型是
VARRBINARY(最大字节长度)
BINARY(固定字节长度)
即使对于最小的保存对象也占用相同的空间量,而
VARBINARY
正好占用保存对象的长度。“最大长度”参数可以设置为远大于对象最大预期大小的值。有了这些数据库,值只有在访问数据行时才会保存在内存中。

据我所知,BLOB数据类型用于2GB以外的列,正如我所说,数据只重几个字节,因为它只是POJO的序列化。当你说也是在mysql中,等等。你只是在使用
h2
进行测试吗?不,该应用程序允许最终用户选择要使用的最终数据库,因此我也为所有MySql和Sql Server测试相同的代码。我只需要存储少量字节,而不是像H2文档所说的那样将其保存在内存中。这就是为什么我认为
BLOB
就像在峡谷中飞翔一样。据我所知,
BLOB
数据类型用于2GB以外的列,正如我所说的,数据只重几个字节,因为它只是POJO的序列化。当你说在mysql中也是如此。你只是在使用
h2
进行测试吗?不,该应用程序允许最终用户选择要使用的最终数据库,因此我也为所有MySql和Sql Server测试相同的代码。我只需要存储少量字节,而不是像H2文档所说的那样将其保存在内存中。这就是为什么我认为
BLOB
就像在峡谷中飞翔。谢谢你的回答。最后一个问题:对于数据类型
VARBINARY(max_length)
max_length
变量的度量是什么?它是以字节、千字节、比特来衡量的吗(我不认为比特是以防万一的)?好的,很好。非常感谢。在各自的文档中,他们提到了一些关于
VARBINARY
BINARY
的信息,但没有提到测量单位,尽管这非常重要。他们可能认为已经理解了,但这是一个可怕的错误,文档必须始终保持对试图描述的对象的完整描述。谢谢您的回答。最后一个问题:对于数据类型
VARBINARY(max_length)
max_length
变量的度量是什么?它是以字节、千字节、比特来衡量的吗(我不认为比特是以防万一的)?好的,很好。非常感谢。在各自的文档中,他们提到了一些关于
VARBINARY
BINARY
的信息,但没有提到测量单位,尽管这非常重要。他们可能认为它已经被理解了,但这是一个可怕的错误,文档必须始终保持对试图描述的对象的完整描述。