sql >> Databasteknik >  >> RDS >> Mysql

Komprimera text innan den lagras i databasen

Ska du indexera dessa texter. Hur stor är läsbelastningen på dessa texter? Infoga last?

Du kan använda InnoDB datakomprimering - transparent och modernt sätt. Se dokument för mer information.

Om du har riktigt stora texter (säg att varje text är över 10 MB), är det bra att inte lagra dem i Mysql. Lagra komprimerade av gzip-texter i filsystemet och endast pekare och meta i mysql. Du kan enkelt utöka ditt lager i framtiden och flytta det till t.ex. DFS.

Uppdatering: ytterligare ett plus med att lagra texter utanför Mysql:DB förblir liten och snabb. Minus:hög sannolikhet för datainkonsekvens.

Uppdatering 2: om du har många programmeringsresurser, snälla, ta en titt på projekt som detta: http://code.google.com/p/mysql-filesystem-engine/ .

Slutlig uppdatering: enligt din information kan du bara använda InnoDB-komprimering - det är samma sak som ZIP. Du kan börja med dessa parametrar:

CREATE TABLE book_parts
 (...) 
 ENGINE=InnoDB
 ROW_FORMAT=COMPRESSED 
 KEY_BLOCK_SIZE=8;

Senare måste du spela med KEY_BLOCK_SIZE . Se SHOW STATUS LIKE 'COMPRESS_OPS_OK' och SHOW STATUS LIKE 'COMPRESS_OPS' . Förhållandet mellan dessa två parametrar måste vara nära 1.0:Dokument .



  1. Accent sökning i SQLite (android)

  2. Det korrekta sättet att implementera en unik begränsning som tillåter flera NULL-värden i SQL Server

  3. Hur tar man säkerhetskopiering av MySQL-databas med MySQL Workbench?

  4. SQL Server 2005 och temporärt tabellomfång