sql >> Database teknologi >  >> RDS >> Mysql

Hvordan påvirker isolering af transaktionsniveau ydeevnen i autocommit-tilstand i MySQL?

TL;DR:Hvis dit forum er langsomt, er TRANSAKTIONSISOLATIONSNIVEAU højst sandsynligt ikke årsagen til det, og det hjælper næppe at indstille det til noget andet end standarden. Indstilling af innodb_flush_log_on_trx_commit =2 vil hjælpe, men har konsekvenser for holdbarheden for nedbrud.

Den lange version:

Hvilket TRANSAKTIONSISOLERINGSNIVEAU har jeg skrevet op i http:/ /mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html . Se alle 3 InnoDB-oversigtsartikler i http://mysqldump.azundris.com/categories/32 -InnoDB .

Konsekvensen af, at systemet under alle omstændigheder skal være i stand til at RULLE TILBAGE, så ikke engang LÆS UENGAGELIG, ændrer noget, der skal gøres på en skrivning.

For læsning af transaktioner er læsningen langsommere, når kæden af ​​fortryd-logposter, der fører til visningen af ​​læsningstransaktionen, er længere, så LÆS UNCOMMITTED eller LÆS KOMMITTET kan være meget lidt hurtigere end standard GENTAGBAR LÆSNING. Men du skal huske på, at vi taler om hukommelsesadgange her, og det er diskadgangene, der bremser dig.

Med hensyn til AUTOCOMMIT:Dette vil synkronisere hver enkelt skriveerklæring til disken. Hvis du har brugt MyISAM før, og det var godt nok, vil du måske konfigurere

[mysqld]
innodb_flush_log_on_trx_commit = 2

i din my.cnf-fil og genstart serveren.

Det vil få commit til at skrive fra mysqld til filsystemets buffercache, men forsinke udskylning af filsystembuffercachen til disken, så det kun sker én gang i sekundet. Du vil ikke miste nogen data på mysqld-nedbrud, men du kan miste op til 1 sek. af skrivninger ved hardwarenedbrud. InnoDB vil dog gendanne automatisk, selv efter hardwarenedbrud, og adfærden er stadig bedre, end den var med MyISAM før, selvom den ikke er fuld ACID. Det vil være meget hurtigere end AUTOCOMMIT uden den indstilling.



  1. Følg design af brugerdatabasetabel

  2. Sådan automatiseres Galera Cluster ved hjælp af ClusterControl CLI

  3. Adgang nægtet for brugeren "[e-mail beskyttet]" (ved hjælp af adgangskode:NEJ)

  4. Den nemmeste måde at lave en rekursiv selv-join på?