sql >> Databáze >  >> RDS >> Mysql

Jak izolace na úrovni transakcí ovlivňuje výkon v režimu autocommit v MySQL?

TL;DR:Pokud je vaše fórum pomalé, ÚROVEŇ IZOLACE TRANSAKCE toho s největší pravděpodobností není příčinou a nastavení na něco jiného než výchozí sotva pomůže. Nastavení innodb_flush_log_on_trx_commit =2 pomůže, ale má důsledky pro životnost při selhání.

Dlouhá verze:

Jakou ÚROVEŇ IZOLACE TRANSAKCÍ jsem napsal v http:/ /mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html . Podívejte se na všechny 3 články s přehledem InnoDB v http://mysqldump.azundris.com/categories/32 -InnoDB .

Z toho vyplývá, že v každém případě musí být systém schopen ROLLBACK, takže ani READ UNCOMMITTED nemění nic, co je třeba udělat při zápisu.

U transakcí čtení je čtení pomalejší, když je řetězec záznamů zpětného protokolu vedoucí k zobrazení transakce čtení delší, takže READ UNCOMMITTED nebo READ COMMITTED může být o něco rychlejší než výchozí REPEATABLE READ. Ale musíte mít na paměti, že zde mluvíme o přístupech do paměti a jsou to přístupy na disk, které vás zpomalují.

K věci AUTOCOMMIT:Toto synchronizuje každý jednotlivý příkaz zápisu na disk. Pokud jste dříve používali MyISAM a to bylo dost dobré, možná budete chtít nakonfigurovat

[mysqld]
innodb_flush_log_on_trx_commit = 2

ve vašem souboru my.cnf a restartujte server.

To způsobí, že potvrzení zapíše z mysqld do mezipaměti vyrovnávací paměti souborového systému, ale zpozdí vyprázdnění vyrovnávací paměti vyrovnávací paměti souborového systému na disk, takže k tomu dojde pouze jednou za sekundu. Při havárii mysqld neztratíte žádná data, ale při havárii hardwaru můžete ztratit až 1s zápisů. InnoDB se však obnoví automaticky, i když dojde k havárii hardwaru, a chování je stále lepší, než tomu bylo s MyISAM dříve, i když není plně ACID. Bez tohoto nastavení to bude mnohem rychlejší než AUTOCOMMIT.



  1. Odkazování na cizí klíče ve stejném sloupci

  2. Jak nastavit časový limit dotazu v Sequelize?

  3. Neplatné číslo parametru, PDO při duplicitní aktualizaci se nezdaří

  4. Oprava chyby 1064 (42000) při použití operátora MINUS v MariaDB