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

Proč změna z utf8 na utf8mb4 zpomalila moji databázi?

utf je ve skutečnosti utfmb3 a může používat maximálně 3 bajty na znak, zatímco utfmb4 může používat 4 bajty na znak. U sloupců VARCHAR to obvykle není velký rozdíl, protože MySQL bude ukládat pouze tolik bajtů, kolik je potřeba (pokud jste nevytvořili své tabulky MyISAM s ROW_FORMAT=FIXED).

Během provádění dotazu však může MySQL vytvořit dočasné tabulky v paměťovém modulu MEMORY, který nepodporuje řádky s proměnnou délkou. Tyto dočasné tabulky mají maximální velikost, a pokud je tato velikost překročena, dočasné tabulky budou převedeny na tabulky v MyISAM/InnoDB (v závislosti na vaší verzi MySQL). Stavová proměnná Created_tmp_disk_tables se zvýší pokaždé, když k tomu dojde. Pokud ano, zkuste zjistit, zda pomáhá zvýšit hodnotu max_heap_table_size a tmp_table_size .

Případně upgradujte na MySQL 8.0, kde se pro interní dočasné tabulky používá nový modul úložiště, který podporuje řádky s proměnnou délkou.




  1. rozdíl mezi klauzulí ON a použitím klauzule v sql

  2. objednávka mysql podle serializovaných dat?

  3. Výkon MySQL:JOIN ON vs

  4. Databázi nelze otevřít, protože je verze 782. Tento server podporuje verzi 706 a starší. Cesta na nižší verzi není podporována