溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Amoeba中怎么讀取longblob字段

發(fā)布時間:2021-08-06 11:20:56 來源:億速云 閱讀:162 作者:Leah 欄目:數(shù)據(jù)庫

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Amoeba中怎么讀取longblob字段,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

最近有一個應(yīng)用使用Amoeba從幾個庫中讀取MySQL中含有l(wèi)ongblob字段的表,老是報Session was killed。

經(jīng)查是Amoeba中可讀通道的緩存大小引起的。原來在com.meidusa.amoeba.net.io.PacketInputStream類中,有一個屬性maxPacketSize,限制了可讀通道的緩存大小,如果當(dāng)前讀取的記錄的長度大于maxPacketSize,就會報錯。所以我們必須把它調(diào)大點。

Java代碼 
/** 最大容量 */ 
protected static final int MAX_BUFFER_CAPACITY = 1024 * 1024 * 2; 
private int maxPacketSize = MAX_BUFFER_CAPACITY; 
 
 
public int getMaxPacketSize() { 
    return maxPacketSize; 

 
public void setMaxPacketSize(int maxPacketSize) { 
    this.maxPacketSize = maxPacketSize; 

maxPacketSize默認(rèn)是2MB,但是發(fā)現(xiàn)setMaxPacketSize方法沒有在其它地方有調(diào)用,應(yīng)該是不可配置的,因此我直接修改了MAX_BUFFER_CAPACITY,重新打包扔上去就沒問題了。


另外,當(dāng)maxPacketSize大小不足時,用SQLYog連代理時的時候,發(fā)現(xiàn)一個有趣的現(xiàn)象。假如我有一表,各字段長度如下:
field1 | field2
1M     | 3M

如果我先執(zhí)行:SELECT field2 FROM tab
這時出錯:Lost connection to MySQL server during query
再執(zhí)行:SELECT field1 FROM tab
SQLYog就沒有響應(yīng)了,然后amoeba拋OOM異常,屢試不爽。查DUMP文件后,發(fā)現(xiàn)AuthingableConnectionManager 和 Log4j的DailyRollingFileAppender塞滿了內(nèi)存。

上述就是小編為大家分享的Amoeba中怎么讀取longblob字段了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI