2013-10-02 93 views
0

我有一個innodb表,其中包含一個可包含高達〜15KB數據的blob字段。在網上瀏覽這裏和那裏,我發現我的blob字段可以導致(當總字段超過8000字節時)將一些記錄拆分爲2部分:一方面記錄本身與所有字段+前導768字節我的blob,另一方面blob的其餘部分存儲成多個(1-2?)塊存儲爲內存頁的鏈表。Innodb + 8K長度行限制

所以我的問題:在這種情況下,什麼是更有效的數據被MySQL緩存的方式? 1)讓引擎處理我的數據拆分或2)在第二個表中處理拆分,根據我的blob數據的長度存儲1或2條記錄,並讓這些記錄被MySQL緩存? (我的計劃,我可以對此進行分配儘可能多的內存)

回答

0

除非您的系統的表現實在是太可怕了,你必須立即採取行動,你最好使用記錄分割的內部機制。

從事MySQL及其分支(例如MariaDB)工作的人花費大量時間來實現和測試優化。簡單的應用程序代碼會讓你更快樂。將開發和測試時間花在應用程序的獨特邏輯上,而不是試圖解決內部問題。

+0

Thanks Ollie。我預計平均4K-5K在線用戶(DB中有20萬用戶,每個用戶擁有1條記錄)每5秒產生一個請求,每個查詢讀取和/或寫入記錄中的15K(最大)blob字段。我打算分配3 GB的RAM(或更多)用於緩存innodb表。我爲其他服務做過,但所有記錄都低於8000字節的限制,並且它的工作原理類似於具有非常好的響應時間的魅力。我只是想知道,如果MySQL將使用相同的緩存機制與存儲在記錄本身之外的斑點。有人能證實這一點嗎? –