当前位置:网站首页>MySQL Redo log Redo log
MySQL Redo log Redo log
2022-06-23 06:56:00 【Débutant】
Catalogue des articles
Un.、Introductionredo log
Dans les affairesACIDDans les propriétés,Atomicité(A)、Cohérence、Persistance(D)Parundo logEtredo logRéalisation,Isolement(I)Par la serrure+MVCCRéalisation
undo log:Les affaires n'ont pas encorecommit,Exception à mi - parcours,Peut être utiliséundo logRestaurer les données à l'état avant l'exécution de la transaction,Assurez - vous que la transactionAtomicité
redo log:ServicescommitSuccès,Comme il faut du temps pour mettre à jour les données du disque,En cas d'exception,Peut être utiliséredo logPour reprendre la transactionSQL,Assurez - vous que la transactionPersistance(Tant que les affairescommitSuccès,Quoi qu'il arrive,La prochaine foisMySQLLe service fonctionne normalement,La dernière foiscommitLes données doivent être récupérées)
2.、redo logConcept
redo log:Redo log/Journal physique,Utilisé pour enregistrer les changements dans les opérations de transaction,Les enregistrements sont finalement modifiés et stockés par pagePage de données,DirectÉtat final des données stockées,Utilisé pour assurer la transactionPersistance
undo log:Appelé log logique,Ce qui est stocké est spécifique àSQLDéclarations.Si ce qui se passe maintenant estinsert,Exécutez quand vous retournezdelete; Si c'est fait maintenant update, Juste pour reprendre l'ancienne valeur updateReviens!
redo logPar défaut à/var/lib/mysqlEn bas.
redo log C'est une affaire begin L'enregistrement commence à l'heure ( Ce n'est pas une affaire commitEnregistrer seulement quand, Parce que toute la transaction peut faire beaucoup d'opérations ,Si danscommit C'est écrit quand redo log, Une fois l'exception survenue ,redo logPas encore écrit., C'est trop tard , Impossible d'assurer la durabilité de la transaction ),Les transactions sont enregistrées, qu'elles soient engagées ou non.,En cas d'exception( Comme une panne de courant pendant la persistance des données ),InnoDBSera utiliséredo logRetour à l'heure avant la panne de courant,Assurer l'intégrité des données
innodb_log_buffer_sizePar défaut16M(MySQL 5.7),C'estredo logTaille du tampon, Ça commence avec la transaction ,Commence à écrireredo log, Si la transaction est plus importante , Pour éviter de dépenser trop de disques pendant l'exécution de la transaction IO,Peut être plus grandredo logCache,Enregistrer le disqueIO. Il y a une chance de rafraîchir le disque , Prenez le disque au bon moment IO,SibufferPlus gros., Le temps de rafraîchissement sera plus lent ,Plus efficace.
InnoDB Modifier les données opérationnelles , Ne pas modifier directement les données sur le disque , Ce n'est qu'une modification Buffer PoolDonnées dans.InnoDBToujours en premier.Buffer Pool Changement de données enregistré dans redo logMoyenne, Pour récupérer les données après un crash . Dossiers prioritairesredo log, Et puis trouver le temps de Buffer Pool Rafraîchir les données sales sur le disque .
innodb_log_group_home_dir Deux fichiers dans le répertoire spécifié :ib_logfile0,ib_logfile1, Ce fichier est appelé Redo log
buffer poolPool de cache: Cache d'index amovible 、Cache de données, etc., Lecture et écriture accélérées , Manipulation directe de la page de données ,Écris.redo log La modification est terminée , Il y a des fils spéciaux pour faire buffer poolDansdirty pageÉcrire sur le disque
buffer poolLa taille par défaut est134M(MySQL 5.7)
Structure du cache:
Lecture des transactions, Les modifications sont toutes des données dans le pool de cache des opérations prioritaires .Dans le projet réel,mysqld Il va courir seul sur une machine , Une grande quantité de mémoire peut être allouée spécifiquement pour InnoDBDebuffer pool,Plus vite.CRUD
Trois、Disque、Structure du cache

Quand on fait une mise à jour des données 、 Quand les données sont manipulées ,Après le début de la transaction, Au fur et à mesure que les données s'exécutent sql, Toute modification finale des données est enregistrée en premier dans redo logOui.,Pour les données、 Les modifications de l'index sont enregistrées dans Buffer PoolÀ l'intérieur.
Quand les affairescommitQuand, L'opération sur le diagramme est de mettre InnoDB Log Buffer Le contenu est écrit sur le disque ,Si ça marche.,Sur le disqueredo log L'état sera enregistré ——commit, Si ça n'a pas marché ou si c'est fini , Enregistrer l'état ——prepare
log Une exception peut également se produire lors de l'écriture sur le disque , Problèmes tels que les coupures de courant , A conduit à écrire redo log Je n'ai pas fini d'écrire ( C'est l'équivalent d'une transaction sans commitSuccès),En ce momentMySQL Il n'est pas nécessaire de tenir compte de l'intégrité de cette transaction la prochaine fois qu'elle est récupérée , Parce que l'état n'est pas commit, Tout est écrit sur le disque pour indiquer redo logÉcrit avec succès, L'état devient commit.L'état devientcommit Pour les opérations de maintenance ultérieures ACIDCaractéristiques.
- C'est ça?commitQuand,buffer poll Les données sales à l'intérieur (Données modifiées) Avant d'être écrit sur le disque ?
Pas besoin d'attendre.commit Ça a commencé quand . La transaction peut modifier une grande quantité de données , Et la capacité de cache est limitée ,Pourbuffer pollDonnées mises en cache, Il y aura des fils dédiés au bon moment , Rafraîchir le disque , En cas de panne de courant ,La prochaine foisMySQLAprès le démarrage,Sera basé surredo log Données enregistrées à l'intérieur ,Récupération des données. - undo log C'est aussi enregistré dans redo logMoyenne
undo logSupport transaction ROLLBACK, Et ce n'est pas tout en un instant , Enfin, les données sur le disque , Pour éviter une exception pendant le processus de retour en arrière ,Alors...undo log Pour enregistrer dans redo logÀ l'intérieur.ServicescommitSuccès ourollbackSuccès,Pour le rez - de - chaussée, Tout a été écrit avec succès redo logÀ l'intérieur. - Qu'est - ce qui est réel?commitSuccès?
Au lieu de brosser toutes les données sur le disque ,Mais... Opération complète d'enregistrement des transactions redo logDelog bufferÉcrire sur le disque,Encore L'état des données modifiées est défini à commit C'est une transaction réalisée commitSuccès. Bien que les données soient encore buffer poll, Mais tant que notre redo logEnregistrer complètement, Les données peuvent être récupérées , Il y aura des fils spéciaux pour prendre en charge buffer poll Les données sont écrites sur le disque , Les données sont mises à jour sur le disque , Des conditions anormales comme une panne de courant se produisent ,La prochaine foismysqldAprès le redémarrage du serveur,Sera basé surredo log Données enregistrées à l'intérieur .Récupération des données.
Lorsque la transaction est en cours , Toujours écrire en premier redo log, Et puis il y a écrit buffer pool;Transaction réussiecommit,C'est pour s'assurer queredo log Enregistrement complet sur disque
En ce qui concerne les modifications des données du tableau ,buffer pool Est - ce que la page de données Sales de est rafraîchie sur le disque , On n'a pas à s'inquiéter ,Tant queredo log Écrivez tout sur le disque ,On peut passer n'importe quandredo log Refaire le journal pour récupérer la transaction a réussi commitÉtat des données pour
Le plus important dans la base de données est le journal ,Pas les données.
边栏推荐
- Business logic design of physical warehouse and virtual warehouse in middle inventory
- 中台库存中的实仓与虚仓的业务逻辑设计
- C语言运算符优先级口诀
- Kubesphere offline deployment without network environment
- Copy and paste of idea without escape
- 二叉树的遍历及相关知识
- 【shell】Tree命令
- Haas 506 2.0 Tutoriel de développement - bibliothèque de composants avancés - modem. SMS (ne prend en charge que les versions supérieures à 2,2)
- VS2013 FFMPEG环境配置及常见错误处理
- js 动态创建a href 循环下载文件只能下载10个或者固定数目的问题
猜你喜欢

QT method of compiling projects using multithreading

XML DTD record

Open source oauth2 framework for SSO single sign on

994. rotten oranges - non recursive method

【STL】关联容器之unordered_map用法总结

swagger3整合oauth2 认证token

使用ts-node直接运行TypeScript代码

MySQL basic query

Data indicators and data analysis models that designers need to understand

【日常训练】513. 找树左下角的值
随机推荐
Media industry under the epidemic situation, small program ecology driven digital transformation exploration
【STL】pair用法总结
2022年养老理财产品有哪些?风险小的
2.17 haas506 2.0 development tutorial system (only versions above 2.2 are supported)
leetcode - 572. 另一棵树的子树
mysql 函数
反鸡汤致辞
Haas506 2.0 development tutorial -sntp (only versions above 2.2 are supported)
English语法_形容词比较级 - 3级变化
Numerical calculation method chapter7 Calculating eigenvalues and eigenvectors of matrices
mongodb 记录
2121. 相同元素的间隔之和-哈希表法
2022-01-12: give a positive array arr, length N, subscript 0~n-1, a
Linux Installation mysql8.0.25
Detailed explanation of callback function
【毕业季·进击的技术er】自己的选择,跪着也要走
JS to create an array (all elements are objects)
Open source oauth2 framework for SSO single sign on
idea安装 CloudToolkit 插件
【畢業季·進擊的技術er】自己的選擇,跪著也要走