MySQL row_format comprimé vs dynamique
J'ai changé "innodb_file_format" à partir de "l'Antilope" à "Barracuda" bcoz des raisons suivantes.
- Pour éviter de limite de taille de ligne
- Pour éviter la colonne de l'index de limite de taille de
Tout en faisant le format de fichier de changement que j'ai choisi "row_format" comme "dynamique".
Cela fonctionne bien.
Mais, je voudrais changer "row_format" à partir de "dynamique" pour "comprimé" pour la compression de données. Quelqu'un pourrait-il me dire
- Est row_format ont rapport à l'INDEX de COLONNE et insérer des DONNÉES dans des tables? Si oui, ce qui est recommandé et pourquoi?
- Sera format compressé conduit à une dégradation des performances?
OriginalL'auteur Murali Mopuru | 2014-06-20
Vous devez vous connecter pour publier un commentaire.
À l'aide de DYNAMIQUE ou de COMPRIMÉ signifie que InnoDB magasins de type varchar/texte/champs blob qui ne rentrent pas dans la page complètement hors de la page. Mais d'autres que ceux des colonnes, le seul à compter de 20 octets par colonne, le InnoDB limite de taille de ligne n'a pas changé; il est toujours limitée à environ 8000 octets par ligne.
InnoDB supporte uniquement les indices de 767 octets par colonne. Vous pouvez augmenter cette 3072 octets par la mise en
innodb_large_prefix=1
et en utilisant soit DYNAMIQUE ou COMPRESSÉES en format de ligne.À l'aide de COMPRIMÉ de format de ligne ne fait pas de support InnoDB plus indices.
Ce qui concerne la performance, c'est l'un de ces cas où "ça dépend". La Compression est généralement un compromis entre la taille de stockage et la charge du PROCESSEUR pour compresser et décompresser. C'est vrai que cela prend un peu plus de CPU pour travailler avec des données compressées, mais vous devez garder à l'esprit que les serveurs de base de données sont généralement en attente d'e/S et disposent de ressources CPU de rechange.
Mais pas toujours-si vous faites des requêtes complexes sur des données dans le pool de mémoire tampon, vous pouvez être limité par le CPU de plus de I/O. Donc, cela dépend de beaucoup de facteurs comme la façon dont vos données s'inscrit dans la RAM, le type de requêtes que vous exécutez, et le nombre de requêtes par seconde, ainsi que les caractéristiques de votre matériel. Trop de facteurs pour quelqu'un d'autre pour être en mesure de répondre à votre demande sur votre serveur. Vous aurez juste à le tester.
Re votre commentaire:
Une possibilité est que l'index n'est pas convenable dans le pool de mémoire tampon. Les performances se dégradent de manière significative si un index de recherche a besoin pour charger les pages et les expulser des pages lors de chaque requête SELECT. Un EXPLIQUER analyse ne peux pas vous dire si l'indice s'inscrit dans le pool de mémoire tampon.
Je ne sais pas combien de colonnes ou les types de données des colonnes de votre index, mais si vous êtes d'indexation long des colonnes varchar vous devriez envisager d'utiliser le préfixe index (ou de la diminution de la longueur des colonnes).
Vous pouvez aussi obtenir plus de RAM et d'augmenter la taille de la mémoire tampon de la piscine.
OriginalL'auteur Bill Karwin
COMPRIMÉ de compresser les données. Le texte sera compressé vraiment bien. J'ai plusieurs tables et utilisé DYNAMIQUE de l'avant, a déménagé à la compression.
J'utilise MySQL 5.7
Table:
Il utilise 80% moins d'espace COMPRIMÉ par rapport à la DYNAMIQUE. Avant: 80 go, après: 16 go Énorme sauver, alors que je n'ai pas besoin que les données tellement.
Autres tables n'étaient pas si dramatique, mais il sauvé ~50% où il y a quelques champs de texte. E. g. un autre de 6,4 Go -> 3.1 Go avec 1,5 M de lignes.
Je n'ai pas changé de COMPRIMÉ de tableaux plus petits que la plupart enregistre des Entiers/Bits et similaires. Ces tables sont déjà petits dans l'espace, donc pas besoin d'utiliser plus de CPU pour eux.
OriginalL'auteur Lukas