【发布时间】:2016-06-09 14:30:46
【问题描述】:
我有一个带有 Blob 列 requestData 和文本列 "requestDataText" 的对象。 这两个字段可能包含大量数据。在我的示例中,blob 数据大约为 1.2 MB,Text 列包含与该数据等效的文本。
当我尝试提交这个单一实体时,大约需要 20 秒。
DBUtil.beginTransaction();
session.saveOrUpdate(entity);
DBUtil.commitTransaction();
有什么问题或者有什么办法可以缩短这段时间吗?
package a.db.entity;
// Generated Feb 22, 2016 11:57:10 AM by Hibernate Tools 3.2.1.GA
/**
* Foo generated by hbm2java
*/
@Entity
@Table(name="foo"
,catalog="bar"
)
public class Foo implements java.io.Serializable {
private Long id;
private Date reqDate;
private byte[] requestData;
private String requestDataText;
private String functionName;
private boolean confirmed;
private boolean processed;
private boolean errorOnProcess;
private Date processStartedAt;
private Date processFinishedAt;
private String responseText;
private String processResult;
private String miscData;
public AsyncRequestLog() {
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="Id", unique=true, nullable=false)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
...
}
【问题讨论】:
-
如果您从 mysql CLI 执行此插入,是否需要大致相同的时间? (在这种情况下,问题是数据库,而不是休眠。如果您可以从远程 CLI 会话而不是服务器本身执行此操作)。数据库是否“接近”应用程序? (只是想确保数据库不在世界的另一端)。几年前我使用 Hibernate 在 mysql 上存储文档,存储和检索它们需要几毫秒。
-
@Augusto 数据库通过 1Gbit Local Network 连接。由于 Blob 字段,我无法通过 Mysql CLI 插入