我有一個Blob列的對象requestData和一個文本列「requestDataText」。 這兩個字段可能容納大數據。在我的示例中,blob數據大約爲1.2 MB,Text列保存與該Data相同的文本。保存大對象休眠時間過長
當我嘗試提交此單個實體時,大約需要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
@August數據庫通過1Gbit本地網絡連接。由於Blob字段,我無法通過Mysql CLI插入 – kommradHomer