包含大量文本的 MySQL 表
所以我有這個數據庫(總大小 3.1Gb),但這是由於我有一個特定的表,其中包含來自一些測試執行的大量控制台輸出文本。表本身是 2.7Gb,我想知道這個表是否有其他解決方案,所以數據庫會變得更小?備份數據庫甚至將數據庫複製到遊樂場有點煩人,因為這張表太大了。
表是這個
刪除此表並將所有LogTextData <- LongText儲存在PDF中而不是數據庫中會更好嗎?(那麼我無法備份這些數據……)有沒有人知道如何讓這個表更小,或者其他解決方案?我願意接受建議,以使這張桌子更小。
此控制台日誌數據通過Python scipts導入數據庫的方式,因此我可以完全訪問其他 Python 解決方案(如果有的話)。
我可以每天對所有創建的日誌文件進行 gzip 壓縮,然後將它們轉移到另一個位置(雲)?如果伺服器中斷,數據庫已經轉移到另一個位置,因此不會失去任何數據。但是我不能定期訪問它?必須定期訪問這些數據。
將大文件保存在磁碟上並從數據庫連結到它們是許多軟體解決方案使用的有效方法。
但是,3.1G 並不可怕。因此,假設您要將數據保存在數據庫中:
您可能需要考慮使用mariabackup而不是 mysqldump,因為這樣更快,尤其是當您的數據增長到千兆字節範圍時。但是請注意,mariabackup 是一種物理備份工具,與執行邏輯備份的 mysqldump 不同。因此,儘管備份速度更快,但它們並不便攜。如果您必須只有邏輯備份,那麼mydumper可能是一個比 mysqldump 更快的選項。
要考慮的另一件事是列壓縮。MariaDB 10.3 引入了儲存引擎獨立列壓縮功能。假設這適合您的案例,您可以簡單地執行以下操作:
ALTER TABLE `Log` MODIFY LogTextData LONGTEXT COMPRESSED;
該列在磁碟上被壓縮,但是當您通過 SQL 查詢訪問它時會自動解壓縮。
另請參閱 Wagner Bianchi 關於此主題的部落格文章,其中他使用此方法將 11M 表壓縮為 4M: Wagner Bianchi:MariaDB 儲存引擎獨立列壓縮