la réparation par le tri?
J'ai un script qui met à jour localhost, exporte ensuite la mise à jour des résultats de remotehost:
mysqldump --skip-tz-utc --no-create-info --insert-ignore --host=localhost -u u -ppass db table --where=\"timeStamp > FROM_UNIXTIME( $time )\" | mysql -h remote -u u -ppass db
Avec les 20 dossiers, la mise à jour de localhost est très rapide (quelques secondes), mais la décharge remotehost est de prendre plus de 4 minutes...quand je regarde mysql workbench, il dit que l'état de l'hôte distant est "Réparation par le Tri" et de la colonne Info est "/*!40000 ALTER TABLE 'table' ENABLE KEYS */".
Que signifie ce message (et pourquoi est-il tant de temps pour vidage à remotehost avec si peu d'enregistrements)?
thx
OriginalL'auteur Brent | 2011-02-15
Vous devez vous connecter pour publier un commentaire.
mysqldump
est la désactivation de l'index, l'insertion d'enregistrements, et de réactivation de l'index. Cela signifie qu'il affecte l'ensemble de la table, y compris les beaucoup plus de disques que j'ai attendent sont là, sur la base du temps.Ajouter
--skip-disable-keys
les arguments pourmysqldump
et qui devrait arrêter de passe.Dépend si vous modifiez les déclencheurs là et ont besoin d'être sauvegardées. Je devine à partir de votre modèle d'utilisation que le fait de sauter des déclencheurs de sens, mais vous aurez à regarder les détails de vous-même pour être sûr.
OriginalL'auteur Jeff Ferland
mysqldump va faire trois choses à une table pendant le rechargement
DÉSACTIVER LES TOUCHES;
Plusieurs Insertions
ACTIVER LES TOUCHES;
Lorsque vous désactivez les touches, il désactive les non-index uniques.
Les Clés primaires et les Clés Uniques sont Chargés Immédiatement.
Une fois ACTIVER les TOUCHES est démarré, tous les indices sont ensuite construire à l'aide de la "Réparation Par le Tri';
Si vous ignorer DÉSACTIVER les TOUCHES et PERMETTENT de TOUCHES, vous permettra de faire des choses bien pire, parce que les Clés Primaires, Clés Uniques, et Non les Clés Uniques sont construit ligne par ligne. C'est en interne une messier opération à MySQL d'avoir à réaliser POUR UN PLEIN CHARGEMENT D'UNE TABLE !!!
Puisque très peu de données est ajouté, faisant --skip-disable-clés comme "l'Autocratie" évoquée est à la fois sage et concis.
BTW cela s'applique uniquement pour les tables MyISAM. InnoDB ignore DÉSACTIVER les TOUCHES et PERMETTENT de CLÉS.
Il serait bien pire, surtout si le chargement d'un grand nombre de lignes dans une table vide avec de nombreux index. En désactivant les touches pour commencer avec, et leur permettant d'être à la fin, le processus de construction d'indices, surtout sur un grand nombre de lignes insérées dans une table vide, est optimisé (vous faire tout cela une fois à la fin, et il n'y a pas d'autres données à s'inquiéter). Cependant, disons que vous êtes à l'insertion d'une ligne dans 100 millions de dollars, il est plus efficace de rééquilibrage de l'indice à la volée pour qu'une ligne de laisser tomber et de le créer à partir de zéro... je pense que c'est quand même 😉
OriginalL'auteur RolandoMySQLDBA