Introduction et utilisation de MySQL--pt-osc
Le workflow de pt-osc :
1. Vérifiez si la table de modifications a une clé primaire ou un index unique, et s'il existe un déclencheur
2. Cochez Modifier la structure de la table, créez une table temporaire et exécutez l'instruction ALTER TABLE sur la nouvelle table
3. Créez trois déclencheurs sur la table source pour l'INSERT UPDATE. Opération DELETE
4. Copier les données de la table source vers la table temporaire Pendant le processus de copie, l'opération de mise à jour sur la table source sera écrite dans la nouvelle table
<.>5. Combinez la table temporaire et le renommage de la table source (nécessite un verrouillage de modification des métadonnées et un verrouillage de table à court terme)
6. Supprimez la table source et les déclencheurs pour terminer la modification de la structure de la table. .
##==================================== == =================##
Limites de l'outil pt-osc
1. avoir une clé primaire ou un index unique, s'il n'y a pas d'outil, il cessera de fonctionner
2 Si l'opération de filtrage de l'environnement de réplication en ligne est trop compliquée, l'outil ne fonctionnera pas 3. S'il est activé, mais lorsque le maître et l'esclave sont retardés, l'outil suspendra le travail de copie des données
4. Si la vérification de la charge du serveur maître est allumé, mais la charge du serveur maître est élevée, l'outil suspendra l'opération
5 Mais lorsque la table utilise des clés étrangères, si le paramètre --alter-foreign-keys-method ne l'est pas. utilisé, l'outil ne sera pas exécuté
6. Seules les tables du moteur de stockage Innodb sont supportées et il nécessite plus de 1 fois l'espace libre de la table sur le serveur.
pt-osc copier les données
En cours de copie des données , l'outil Les données seront divisées en fonction de la clé primaire ou de la clé unique, et le nombre de lignes de données copiées à chaque fois sera limité pour garantir que la copie ne consomme pas trop de ressources du serveur. Afin de garantir que les données de la table source et de la table cible sont les mêmes, utilisez VERROUILLAGE EN MODE PARTAGE pour obtenir les dernières données du segment de données à copier et ajoutez un verrou partagé aux données pour empêcher d'autres sessions de les modifier. les données. Utilisez LOW_PRIORITY IGNORE pour insérer les données dans la nouvelle table. Le mot-clé LOW_PRIORIT oblige l'opération d'insertion à attendre que les autres opérations qui accèdent à la table soient terminées avant de l'exécuter. Le mot-clé INGORE entraîne l'ignorance des nouvelles données et leur insertion. il existe une clé primaire en double ou une clé d'index unique dans la table.
## Obtenez d'abord les données de copie suivantes Limites, indexation forcée peut efficacement éviter les problèmes avec les plans d'exécution
SELECT /*!40001 SQL_NO_CACHE */ `id` FROM `testdb1`.`tb1001` FORCE INDEX(`PRIMARY`) WHERE ((` id` > Copie trop de données bloquent les autres réponses pendant une longue période
INSERT LOW_PRIORITY IGNORE INTO `testdb1`.`_tb1001_new` (`id`, `c1`, `c6`) SELECT `id`, `c1 `, `c6` FROM `testdb1`.`tb1001` FORCE INDEX(`PRIMARY`) OÙ ((`id` >= '8394306')) ET ((`id` <= '8416562')) VERROUILLAGE MODE DE PARTAGE /*pt-online-schema-change 14648 copie nibble*/
##================= ====================================##
L'outil pt-osc crée trois déclencheurs AFTER sur la table source pour l'opération INSERT UPDATE DELETE. Le déclencheur DELETE utilise DELETE IGNORE pour garantir que les données de la table source et de la nouvelle table sont supprimées, tandis que INSERT. et UPDATE Le déclencheur utilise REPLACE INTO pour garantir que les nouvelles données de la table sont cohérentes avec les données de la table source.
Étant donné que MySQL limite qu'il ne peut y avoir qu'un seul déclencheur du même type, il est nécessaire de vérifier s'il y a un déclencheur sur la table source avant de l'exécuter afin de garantir l'efficacité. et la commodité de la suppression et de la mise à jour, les données de la table source sont fragmentées, elles nécessitent donc une clé primaire ou un index unique sur la table.
##==================================== == =================##
L'impact sur les performances de l'hôte de pt-osc
Pour éviter d'affecter excessivement les performances de l'hôte, l'outil pt-osc les limite à travers les aspects suivants :
1. Contrôlez la taille des données de chaque copie via les paramètres chunk-size et chunk-time .
2. Vérifiez la pression actuelle de l'hôte via le paramètre max-load. Une fois chaque copie de morceau terminée, la commande SHOW GLOBAL STATUS LIKE 'Threads_running' sera exécutée pour vérifier le nombre de threads en cours d'exécution. La valeur par défaut Threads_running=25, si la valeur maximale n'est pas spécifiée, 120 % de la valeur actuelle sera prise comme valeur maximale. Si elle dépasse le seuil, la copie des données sera suspendue
##================ ================================ =======##
pt -osc délai de copie de la bibliothèque esclave
Pour les entreprises sensibles au délai de copie, vous pouvez contrôler le délai de copie via les paramètres suivants :
-- max-log
est par défaut de 1 s. Une fois la copie de chaque morceau terminée, les informations de délai de l'esclave. La bibliothèque spécifiée par le paramètre check-slave-lag sera vérifiée si elle dépasse le seuil max-log, alors suspendez la copie des données jusqu'à ce que le délai de copie soit inférieur au seuil max-log. La vérification des informations de latence de réplication repose sur la valeur de la colonne Seconds_Behind_Master renvoyée dans l'instruction SHOW SLAVE STATUS.
--check-interval
Lorsqu'un délai de réplication se produit et que les données sont mises en pause, le délai de réplication est vérifié périodiquement en fonction du temps spécifié par check -intervalle jusqu'au délai Le temps est inférieur au seuil max-log, puis reprendre la copie des données
--check-slave-lag
IP de l'esclave qui doit vérifier le délai de réplication
Si le paramètre check-slave-lag est spécifié et que la bibliothèque esclave ne peut pas se connecter normalement ou si le thread IO de la bibliothèque esclave et le thread SQL sont arrêtés, il sera considéré que il y a un délai entre le maître et l'esclave, provoquant la suspension de l'opération de copie des données.
Si le paramètre check-slave-lag n'est pas spécifié, le délai de la bibliothèque esclave sera toujours vérifié par défaut, mais le délai de réplication n'entraînera pas la suspension de la réplication des données.
##==================================== == =================##
Paramètres du chunk pt-osc
Dans le document d'aide de pt -osc , les paramètres concernant chunk sont les suivants :
--chunk-index=s Prefer this index for chunking tables --chunk-index-columns=i Use only this many left-most columns of a --chunk-index --chunk-size=z Number of rows to select for each chunk copied (default 1000) --chunk-size-limit=f Do not copy chunks this much larger than the desired chunk size (default 4.0) --chunk-time=f Adjust the chunk size dynamically so each data-copy query takes this long to execute (default 0.5)
Lorsque ni la taille ni la durée du chunk ne sont spécifiées, chunk- Le la valeur par défaut de la taille est 1000 et la valeur par défaut du temps de bloc est de 0,5 S. Les données sont copiées en fonction de la taille du bloc pour la première fois, puis la taille de la taille du bloc est ajustée dynamiquement en fonction de l'heure. première copie pour s'adapter aux changements de performances du serveur. Par exemple, la dernière fois que la copie de 1 000 lignes a pris 0,1 S, la prochaine fois, la taille du bloc est ajustée dynamiquement à 5 000.
Si la valeur de chumk-size est explicitement spécifiée ou si chunk-time est spécifié comme 0, les données seront copiées en fonction de la taille du morceau à chaque fois.
##=====================================================##
pt-osc之alter语句限制
1、不需要包含alter table关键字,可以包含多个修改操作,使用逗号分开,如"drop clolumn c1, add column c2 int"
2、不支持rename语句来对表进行重命名操作
3、不支持对索引进行重命名操作
4、如果删除外键,需要对外键名加下划线,如删除外键fk_uid, 修改语句为"DROP FOREIGN KEY _fk_uid"
##=====================================================##
pt-osc之命令模板
## --execute表示执行
## --dry-run表示只进行模拟测试
## 表名只能使用参数t来设置,没有长参数
pt-online-schema-change \--host="127.0.0.1" \--port=3358 \--user="root" \--password="root@root" \--charset="utf8" \--max-lag=10 \--check-salve-lag='xxx.xxx.xxx.xxx' \--recursion-method="hosts" \--check-interval=2 \--database="testdb1" \t="tb001" \--alter="add column c4 int" \--execute
pt-osc之命令输出
上面命令执行输出如下:
No slaves found. See --recursion-method if host 171DB166 has slaves. Will check slave lag on: 170DB166 Operation, tries, wait: copy_rows, 10, 0.25 create_triggers, 10, 1 drop_triggers, 10, 1 swap_tables, 10, 1 update_foreign_keys, 10, 1 Altering `testdb1`.`tb001`... Creating new table... Created new table testdb1._tb001_new OK. Altering new table... Altered `testdb1`.`_tb001_new` OK. 2016-04-28T23:18:04 Creating triggers... 2016-04-28T23:18:04 Created triggers OK. 2016-04-28T23:18:04 Copying approximately 1 rows... 2016-04-28T23:18:04 Copied rows OK. 2016-04-28T23:18:04 Swapping tables... 2016-04-28T23:18:04 Swapped original and new tables OK. 2016-04-28T23:18:04 Dropping old table... 2016-04-28T23:18:04 Dropped old table `testdb1`.`_tb001_old` OK. 2016-04-28T23:18:04 Dropping triggers... 2016-04-28T23:18:04 Dropped triggers OK. Successfully altered `testdb1`.`tb001`.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











DMA IN C fait référence à DirectMemoryAccess, une technologie d'accès à la mémoire directe, permettant aux périphériques matériels de transmettre directement les données à la mémoire sans intervention CPU. 1) L'opération DMA dépend fortement des dispositifs matériels et des pilotes, et la méthode d'implémentation varie d'un système à l'autre. 2) L'accès direct à la mémoire peut apporter des risques de sécurité et l'exactitude et la sécurité du code doivent être assurées. 3) Le DMA peut améliorer les performances, mais une mauvaise utilisation peut entraîner une dégradation des performances du système. Grâce à la pratique et à l'apprentissage, nous pouvons maîtriser les compétences de l'utilisation du DMA et maximiser son efficacité dans des scénarios tels que la transmission de données à grande vitesse et le traitement du signal en temps réel.

L'utilisation de la bibliothèque Chrono en C peut vous permettre de contrôler plus précisément les intervalles de temps et de temps. Explorons le charme de cette bibliothèque. La bibliothèque Chrono de C fait partie de la bibliothèque standard, qui fournit une façon moderne de gérer les intervalles de temps et de temps. Pour les programmeurs qui ont souffert de temps et ctime, Chrono est sans aucun doute une aubaine. Il améliore non seulement la lisibilité et la maintenabilité du code, mais offre également une précision et une flexibilité plus élevées. Commençons par les bases. La bibliothèque Chrono comprend principalement les composants clés suivants: std :: chrono :: system_clock: représente l'horloge système, utilisée pour obtenir l'heure actuelle. std :: chron

La mesure des performances du thread en C peut utiliser les outils de synchronisation, les outils d'analyse des performances et les minuteries personnalisées dans la bibliothèque standard. 1. Utilisez la bibliothèque pour mesurer le temps d'exécution. 2. Utilisez le GPROF pour l'analyse des performances. Les étapes incluent l'ajout de l'option -pg pendant la compilation, l'exécution du programme pour générer un fichier gmon.out et la génération d'un rapport de performances. 3. Utilisez le module Callgrind de Valgrind pour effectuer une analyse plus détaillée. Les étapes incluent l'exécution du programme pour générer le fichier callgrind.out et la visualisation des résultats à l'aide de Kcachegrind. 4. Les minuteries personnalisées peuvent mesurer de manière flexible le temps d'exécution d'un segment de code spécifique. Ces méthodes aident à bien comprendre les performances du thread et à optimiser le code.

Pour désinstaller MySQL en toute sécurité et en toute sécurité et nettoyer tous les fichiers résiduels, suivez les étapes suivantes: 1. Stop MySQL Service; 2. Désinstaller les packages MySQL; 3. Nettoyer des fichiers de configuration et des répertoires de données; 4. Vérifiez que la désinstallation est approfondie.

C fonctionne bien dans la programmation du système d'exploitation en temps réel (RTOS), offrant une efficacité d'exécution efficace et une gestion du temps précise. 1) C répond aux besoins des RTO grâce à un fonctionnement direct des ressources matérielles et à une gestion efficace de la mémoire. 2) En utilisant des fonctionnalités orientées objet, C peut concevoir un système de planification de tâches flexible. 3) C prend en charge un traitement efficace d'interruption, mais l'allocation de mémoire dynamique et le traitement des exceptions doivent être évités pour assurer le temps réel. 4) La programmation des modèles et les fonctions en ligne aident à l'optimisation des performances. 5) Dans les applications pratiques, C peut être utilisé pour implémenter un système de journalisation efficace.

L'optimisation du code C peut être réalisée grâce aux stratégies suivantes: 1. Gérer manuellement la mémoire pour l'utilisation d'optimisation; 2. Écrivez du code conforme aux règles d'optimisation du compilateur; 3. Sélectionnez les algorithmes et structures de données appropriés; 4. Utiliser les fonctions en ligne pour réduire les frais généraux d'appel; 5. Appliquer la métaprogrammation du modèle pour optimiser au moment de la compilation; 6. Évitez la copie inutile, utilisez la sémantique mobile et les paramètres de référence; 7. Utilisez Constir correctement pour aider à l'optimisation du compilateur; 8. Sélectionnez des structures de données appropriées, telles que STD :: Vector.

Avec la vulgarisation et le développement de la monnaie numérique, de plus en plus de personnes commencent à faire attention et à utiliser des applications de monnaie numérique. Ces applications offrent aux utilisateurs un moyen pratique de gérer et d'échanger des actifs numériques. Alors, quel type de logiciel est une application de devise numérique? Soyons une compréhension approfondie et faisons le bilan des dix principales applications de monnaie numérique au monde.

Les étapes principales et les précautions pour l'utilisation de flux de chaîne en C sont les suivantes: 1. Créez un flux de chaîne de sortie et convertissez des données, telles que la conversion des entiers en chaînes. 2. Appliquer à la sérialisation des structures de données complexes, telles que la conversion du vecteur en chaînes. 3. Faites attention aux problèmes de performances et évitez l'utilisation fréquente des flux de chaînes lors du traitement de grandes quantités de données. Vous pouvez envisager d'utiliser la méthode d'ajout de Std :: String. 4. Faites attention à la gestion de la mémoire et évitez la création et la destruction fréquentes des objets de flux de chaîne. Vous pouvez réutiliser ou utiliser Std :: Stringstream.
