2017-09-14 99 views
0

爲了加快讀取過程,我想將blob從一個表傳輸到另一個表。但後來我看到其他人從堆棧溢出推薦使用MySQL barracuda因爲這種方法消除了傳輸blob的需要。將Blob存儲在另一個表中或使用mysql barracuda

我的數據庫(由老程序員設計)

Visitor_visit(表名) - >包含5 BLOB列。把blob移到另一個表的想法。

那麼我應該使用哪種方法?我該如何分開桌子?我是否需要爲每個blob創建5個表以獲得更好的性能?我真的不是MYSQL的期望。

我不想現在將圖像存儲在磁盤中。 (現狀不會讓我這樣做)

回答

0

讓我們看看錶的模式(SHOW CREATE TABLE),該斑點的大小的一些線索等

通常情況下,你不應該打擾做任何事情的5個斑點。一切都應該是自動的。

但是,有一些聚合大小限制。再次請提供更多具體信息如果您遇到了一些錯誤消息。

同時,我沒有看到「垂直分區」的內在原因。

1

梭子魚不會像你想象的那樣改變如何存儲斑點。如果blob適合其他列的數據頁面,它將與這些列保持在一起。只有當blob大於頁面上的內容時,纔將其存儲在頁外。

與Antelope相比,大塊Blob也將主要存儲在頁外,但blob的前768個字節將與其他列存儲在主頁面上。所以我們只是談論blob的第一個3/4存儲區的差異。

在這兩種情況下,如果您只是不在查詢中引用blob列(並且出於此原因,您不應該使用SELECT *),InnoDB足夠聰明,可以避免獲取不需要的額外Blob頁面。您不必製作另一張桌子來存儲斑點。

相關問題