Technology sharing

MySQL practica 45 lectionum studiorum notas (continue renovatas...)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


1. Infrastructure: Quomodo quaestionem interrogationis SQL executus est?

Overview

Insert imaginem descriptionis hic

Generaliter MySQL dividi potest in duos ordines

  • Servo accumsan
    Plurima de MySQL's core functionum
    • Connector
    • Query cache
    • Analyzer
    • optimizer
    • Actus
    • Omnia in functionibus constructa (ut tempus, tempus, functiones mathematicae et cryptographicae, etc.)
    • Facultates per repono machinas
      • procedure stored
      • felis
      • view
      • ……
  • repono engine accumsan
    Obturaculum-in architectura, responsalis pro notitia repono et retrieval
    • Innodb
    • MyISAM
    • Memoria

Connector

mysql -h$ip -P$port -u$user -p
  • 1

Mysql in nexu mandatum est instrumentum clientis ad nexum cum servo constituendum.Peracta classic TCP handshake, iungo
Incipere est identitatem tuam authenticare. Hoc tempore, nomen usoris et tesserae quas intrasti adhibebuntur.

  • Si nomen usoris vel tesserae falsae sunt, "Accessus errori usoris negavit" et deinde programmata client
    Summum supplicium.
  • Si username et password authenticas transit, iungo voluntatempermissiones mensam Vide quid ibi habeas permissiones.Postea in hoc nexu
    Licentia iudicii logicae dependet ex permissionibus hac vice recitatis.

Insert imaginem descriptionis hic
Si cliens nimium diu otiosus est, iungo eum sponte disiunget. Hoc tempus regitur per parametri moram_timeout, et defalta valor VIII horarum est.

Si client petitionem iterum post nexum hians miserit, recipiet errorem commonitionem: Lost connection to MySQL server during query . Si vis hoc tempore pergere, reconnect debes et rogationem exequi.

In datorum, longum nexum significat quod post connexionem proficiat, si client petitiones pergit, idem nexus semper utendum est. Brevis connexio significat nexum hiansum post paucas interrogationes exsecutioni mandandas et nova rursus in interrogationem proximam restituitur.

Processus connexionis constituendae plerumque complicatus est, ideo admoneo ut actiones conetur minuere nexum constituendi in usu, id est, longas nexus uti conaris.

Sed postquam omnes longi nexus adhibiti sunt, invenias quandoque memoriam a MySQL occupatam celerrime augeriMemoria ad tempus adhibetur a MySQL durante executione in obiecto coniunctionis. . Hae facultates dimittuntur cum nexum hiansum erit.Itaque siLongae coniunctionis cumulus ad nimiam memoriam usus perducat.vi a systematis (OOM).

Quomodo hanc solvendam quaestionem? Sequentes duas optiones considerare potes.

  • Periodice disconnect diu nexus . Postquam usus est ad tempus, vel postquam programma decernit magnam quaestionem, quae memoriam suscipit, exsecutum est, nexum disiungitur, et tunc quaesitio requiritur et reconnectur.
  • Si MySQL 5.7 vel recentiore uteris, facere potes mysql_reset_connection ad nexum subsidiis renitialize opum. Hic processus reiunctio et permissionis verificationem non requirit, sed nexum cum statu mox creatum restituet.

Query cache

Post MySQL quaesitum quaesitum, primum ad cella quaerendum ibit vide an haec sententia ante supplicium sit. Antea constitutiones exsecutae et earum eventus in memoria clavium paria clavium forma directe condi possunt. Clavis est enuntiatio interrogationis et pretii proventus interrogationis. Si quaestio tua clavem directe in hoc cella invenire potest, tunc valor directe clienti reddetur.

Si enuntiatio in cella interrogationis non est, exsecutio periodus pergit. Expleto exsecutione, eventus exsecutionis in cella interrogationis reponenda est. Potes videre si quaesitio cache ferit, MySQL exitum directe reddere sine operationibus multiplicibus subsequentibus faciendo, quod efficax est.

Sed maxime temporis egoCommendatur ut interrogationi caching non uteris ,Quare? Quia saepe quaestio caching plus mali quam boni facit.

Investigatio cache saepissime infirmatur. Dum renovatio ad mensam datur, omnes schedae interrogationes in hac mensa patebunt. Ita fieri potest ut molestias eventus servandi sumpseris, et antequam eos etiam uteres, renovatione deletae sunt. Cum enim databases cum gravibus renovationis pressionis, hit rate cellae interrogationis nimis gravis erit. Nisi negotium tuum habeat mensam staticam quae semel tantum diu renovabitur. Exempli gratia, si mensa est systema configurationis, quaesitio in hac mensa apta est ad quaerendum thesaurum.

Fortunate, MySQL etiam hunc modum "usus in postulatis" praebet. Quaesitum_cache_typum parametri poscitis ut cache query non adhibetur pro defaltis SQL declarationibus. Ad constitutiones, quas certos habere vis, cache interrogatione uti, SQL_CACHE uti potes ut expresse definias, sicut sequentia:

select SQL_CACHE * from T where ID=10;
  • 1

sentire estMySQL 8.0 versio recta totam quaestionem delet munus cachequod significat hoc munus ab 8.0 initium non amplius fore.

Analyzer

Si quaestio cella non feritur, ipsa exsecutio enuntiationis incipit. Primum, MySQL scire debet quid vis facere, unde SQL editio parse indiget.

Insert imaginem descriptionis hic

optimizer

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

Actus

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

2. Logging system: Quomodo enuntiatio SQL renovatio exsecutus est?

Insert imaginem descriptionis hic

redo log

Nescio si adhuc recordaris articuli "Kong Yiji". In deversorium procurator tabulam roseam habet specialiter ad fidem monumentorum hospitum recordandi. Si multi non sunt qui fidem dant, tum nomen emptoris et rationem in tabula scribere potest. Sed si nimis multi sunt in rationibus creditis, semper erunt cum tabula ventilationis earum vestigia non tenere.

Si quis fidem reddere vel debitum reddere velit, tabernarius plerumque duas optiones habet;

  • Uno modo est directe aperire ledulam et fidem rationem addere vel minuere;
  • Alius aditus estPrimum tabulas scribe hoc tempore in tabula rosea, et deinde rationem librorum excipe post tempus occlusum et computa.

Cum res magna est et calculo occupatus est, cauponem certum eligethoc " quia prius operatio nimis molesta est. Primum, invenire debes summam fidei huius tabulae rationem. Cogita de eo, duodecim paginarum dense refertae sunt. Ut nomen invenias, tabernarius vitreas legendas imponere potest et lente quaerere leder.

Hoc totum molestum est cogitare. Sed facilius est in tabula rosea eam scribere. Cogitare, si tabernae tabulae roseae auxilium non habet, tabellario dare debet quotiens rationes commemorat.

Similiter etiam quaestio haec in MySQL existit. Si omnis operatio renovationis scribenda est in disco, et orbis etiam respondere debet coram adaequationis documento, IO sumptus et sumptus inquisitionis totius processus altissimus erit. Ad hanc quaestionem solvendam, excogitatores MySQL ideam similem in tabula deversoriorum tabernae roseae tabulae ad efficientiam renovationis emendandam adhibebant.

Totus processus cooperationis inter tabulam roseam et crepidinem est actu quod saepe in MySQL memoratur. WAL ars,WAL Plenum nomen estWrite-Ahead Logging, punctum clavis estPrimum trabem scribe, deinde scribe in discohoc est, primo scribe tabulam roseam, et deinde scribe rationem libri cum non sis occupatus.

Speciatim, cum recordum renovandum esse debet, machina InnoDB primum tabulam redo (tabulam roseam) et memoriam renovationis scribet. Hoc tempore renovatio perficitur. Eodem tempore, InnoDB machinamentum operandi testimonium in disco tempore opportuno renovabit, et haec renovatio saepe fit cum systema respective otiosum est, sicut quod tabernarius post occlusionem agit.

Si rationes fidei hodie non sunt multae, tabernarius expectare potest usque dum tempus claudendi supellex exstat. Sed quid faciamus si multae rationes fide certa die et plena sunt tabula rosea? Hoc tempore tabernarius opus suum deponere debuit, nonnullas tabulas fidei in tabula rosea ad tabellarium renovare, et deinde tabulas illas e tabula rosea delere ut novis rationibus aperiat.

Similiter, index redo InnoDB certae magnitudinis habet. Exempli gratia, potest configurari ut copia 4 imaginum, quaelibet fasciculus 1GB in magnitudine est. Scribere incipias ab initio, et deinde ad initium scribe in ansa, ut in pictura infra ostendetur.

Insert imaginem descriptionis hic
scribere pos est positio recordationis hodiernae. Scribendo retrocedit. Postquam scribens ad finem tabellae N. 3, redit ad initium documenti N. 0 LAPIS positio praesens est deleri et etiam progredi et ansas.

Spatium inter scribe pos et LAPIS est vacuum pars "rosea tabula" quae novas operationes memorare potest. Si scribe pos prehendit cum LAPIS, significat "rosea tabula" plenam esse, nec novae renovationes hoc tempore confici possunt.

Cum redo stipes, InnoDB efficere potest ut etiam si enormiter datorum sileo, antea monumenta submissa non pereantcrash-safe

Ut notionem ruinae tutae cognoscat, cogita exemplum prioris nostrae fidei. Quamdiu fidem recordum in tabula rosea vel in tabulis scripti inscripta est, etiamsi postea tabernarius eius oblitus est, ut repente negotium per paucos dies suspendit, potest tamen fidem rationem declarare per notitias in cursore et. tabula rosea resumptis negotiis.

binlog

Ut ante diximus, MySQL totum re vera duas partes habet: una est iacuit ministrantis, quae maxime facit in gradu muneris MySQL;Tabula rosea de supra locuti sumusredo stipes est log unique ad InnoDB engine,et Servo iacuit etiam suum stipitem habet, binlogum appellatum.

Quaeres, opinor, cur duo ligna sint?

Quia nulla erat machina InnoDB in MySQL initio. MySQL proprium machinamentum MyISAM est, sed MyISAM facultatem ruinae tutae non habet, et binlogae tigna solum ad archivendam adhiberi possunt. InnoDB ad MySQL in forma obturaculi ab alio comitatu inductus est. Cum tantum binlog innixus facultates tutas non habeat, InnoDB utitur alia ratione logae, hoc est, redo stipes, ad capaces fragores tutas consequendas.

Hae duae trabes habent sequentes tres differentias.

  1. Stipes redo ad machinam InnoDB singularis est; binlog a servo tabulato MySQL perficitur et ab omnibus machinis adhiberi potest.
  2. redo iniuriarum est corporalis iniuriarummemorat "quid modificationes in pagina certa data";binlog est logica log, quae descripta est logica originalis huius constitutionis, ut "adde 1 ad c campum in versu cum ID=2".
  3. redo iniuriarum scriptum est in loopspatium consumptum est;binlog scribi potest etiam . "Scriptum appende" significat quod post binlogum fasciculus quandam magnitudinem attingit, transibit ad unum proximum et priorem truncum non scribet.

Intellectu rationis horum duorum ligni, inspiciamus processuum internorum exsecutoris et InnoDB machinam cum hanc propositionem simplicem renovationem exsecutioni mandandam.

  1. Exsecutor primum quaerit machinam ad lineam ID=2. Tuus est clavis primaria, et machina directe utitur ligni inquisitionis ad hunc ordinem inveniendum. Si pagina data, ubi ordo cum ID=2 sita est, iam in memoria est, directo executori reddetur;
  2. Exsecutor accipit ordinem datam machinam, huic pretii 1 addit, exempli gratia, esse N, nunc est N+1, novum ordinem notitiarum accipit, ac deinde machinam instrumenti ad hoc scribendum vocat. novo ordine data.
  3. Machinam novum hunc ordinem notitiarum in memoriam renovat ac operationem renovationis in ligno redo commemorat redo log inpara civitatis. Deinde certiorem faciat exsecutionem exsecutioni mandandam et transactionem quovis tempore exhiberi posse.
  4. Exsecutor binlogum huius operationis generat et ponit binlog scriptum est orbis
  5. Exsecutor vocat machinam transactionem instrumenti committendi, et machinam scribens redo log Mutare submittere (committere) Status, renovatio perficitur.

Hic fluere chartula exsecutioni do huius renovationis enuntiationis. Capsulae levis in figura indicat quod intus InnoDB exsecutus est, et arca obscura indicat exsecutum esse in exsecutore.

Insert imaginem descriptionis hic
update dicitur supplicium processus

Animadvertis licet tres ultimas gradus "circulares" videri aliquid.

duos tempus committere

Cur necessaria est "submissio duplex"?Hoc est ut differentiam inter omniaratione consistent . Ad explicandam hanc quaestionem, incipiendum est cum interrogatione in principio articuli: Quomodo restituet datorum statum alicujus secundi intra dimidium mensem?

Ut ante diximus, binlog omnes operationes logicas commemorabit et formam "scribendi appendendi" adhibebit. Si tua DBA promittit se intra dimidium mensem restitui posse, ratio tergum suppeditabit omnes binlogos in extremo mense ultimo certo servaturum, et ratio dorsalia totius datorum regularium praestabit. Hic "ordinarius" pendet a gravitate systematis, quae semel in die vel semel in hebdomada esse potest.

Cum debes restituere ad alterum certum, verbi gratia, ad horam secundam pomeridianam uno die, invenis tabulam casualiter deletam in meridie, et datam recuperare debes, hoc facere potes;

  • Primum, recentissimum plenum tergum invenies.
  • Deinde, a tergo temporis punctum, tergum binlogorum ordine educuntur, et tempori re- plicantur antequam tabula casu meridie deleta est.
    Hoc modo, datorum temporalium tuum idem erit quod datorum online antequam eam per accidens delevit. Tunc tabulam datam e database temporali accipere potes et eam restituere ad datorum onlinem prout opus est.

Bene, postquam de processu receptae notitiae loquitur, revertamur et loquamur de causa iniuriarum "duo-phase committit". Hic etiam contradictione utimur probatione ad explicandum.

Cum redo loga et binlog duae logicae independentes sunt, si duo-phasma committere non dicitur, aut redo stipes primo scribi debet et deinde binlog scribi debet, vel inverso ordine adhibendus est. Cum his duobus modis quae sint problemata videamus.

Adhuc uti exemplo praecedente constitutione renovata. Pone valorem agri c in versu currenti cum ID=2 est 0, et puta in executione constitutionis renovationis, fragorem post primum scriptum esse, sed ante secundum truncum scriptum.

  • Scribere recto log primum et binlog.
    Puta processus MySQL enormis sileo cum stipes redo scribitur sed ante binlogum scriptum est. Ut ante diximus, postquam redo index scriptum est, etiamsi ratio inruerit, notitia adhuc restitui potest, sic valor c in hac linea post recuperationem 1 est. Sed cum binlog crepuit antequam finiretur, haec enuntiatio in binlog hoc tempore non notata est. Cum igitur postea stipes subnixus est, haec enuntiatio in binlog servatis non continebitur. Tunc invenies, si binlogo hoc uti debes ad bibliothecam temporalem restituendam, quia binlog huius constitutionis amittitur, bibliotheca temporalis hoc tempore non renovabitur eadem ac pretii originalis bibliothecae.
  • Scribe binlog primum et redo log.
    Si fragor post binlogum scriptum est, cum redo stipes nondum scriptus sit, transactio post ruinam receptam invalida erit, ergo valor ipsius c in hac linea 0 est. Sed log "Mutare c ab 0 ad 1" in binlog notatum est. Cum ergo binlog postea restituere adhibetur, plus negotii exibit.
    Ex his constare potest, si "duo-phase" usus non sit, status datorum repugnare potest cum statu bibliothecae restitutae utens stipite suo.

Dicas, hoc probabile nimis?

Profecto non, hic processus non solum opus est ad notitias recipiendas post misoperationem. Cum facultatem ampliare debes, hoc est, cum plus tergum databases ad augendam facultatem legere debes, praxis communis nunc est plena tergum utatur et binlogum adhibeat ut hoc assequatur repugnantia est inter dominum et servum databases online.

Simpliciter positum, utrumque redo stipes et binlog adhiberi possunt ad repraesentandum statum transactionis committere, etSubmissio duplex tempus est servare duas civitates logice congruentes.