Mysql
 sql >> Base de données >  >> RDS >> Mysql

Compresser le texte avant de le stocker dans la base de données

Allez-vous indexer ces textes. Quelle est la charge de lecture sur ces textes ? Insérer charge ?

Vous pouvez utiliser la compression de données InnoDB - de manière transparente et moderne. Voir docs pour plus d'informations.

Si vous avez des textes vraiment volumineux (par exemple, chaque texte dépasse 10 Mo), la bonne idée est de ne pas les stocker dans Mysql. Stockez les textes compressés par gzip dans le système de fichiers et uniquement les pointeurs et les méta dans mysql. Vous pouvez facilement étendre votre espace de stockage à l'avenir et le déplacer par ex. DFS.

Mise à jour : un autre avantage du stockage des textes en dehors de Mysql :la base de données reste petite et rapide. Moins :forte probabilité d'incohérence des données.

Mise à jour 2 : si vous avez beaucoup de ressources en programmation, jetez un œil à des projets comme celui-ci : http://code.google.com/p/mysql-filesystem-engine/ .

Dernière mise à jour : selon vos informations, vous pouvez simplement utiliser la compression InnoDB - c'est la même chose que ZIP. Vous pouvez commencer avec ces paramètres :

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

Plus tard, vous devrez jouer avec KEY_BLOCK_SIZE . Voir SHOW STATUS LIKE 'COMPRESS_OPS_OK' et SHOW STATUS LIKE 'COMPRESS_OPS' . Le ratio de ces deux paramètres doit être proche de 1.0 :Documents .