sql >> Databasteknik >  >> RDS >> Mysql

Varför gjorde min databas långsammare att byta från utf8 till utf8mb4?

utf är egentligen utfmb3 och får använda max 3 byte per tecken medan utfmb4 får använda 4 byte per tecken. För VARCHAR-kolumner gör detta normalt inte så stor skillnad eftersom MySQL bara lagrar så många byte som behövs (såvida du inte har skapat dina MyISAM-tabeller med ROW_FORMAT=FIXED).

Men under körning av en fråga kan MySQL skapa tillfälliga tabeller i lagringsmotorn MEMORY som inte stöder rader med variabel längd. Dessa temporära tabeller har en maximal storlek, och om den storleken överskrids kommer de temporära tabellerna att konverteras till tabeller i MyISAM/InnoDB (beroende på din version av MySQL). Statusvariabeln Created_tmp_disk_tables kommer att ökas varje gång detta händer. Om så är fallet, försök att se om det hjälper att öka värdet på max_heap_table_size och tmp_table_size .

Alternativt kan du uppgradera till MySQL 8.0 där en ny lagringsmotor som stöder rader med variabel längd används för interna temporära tabeller.




  1. Behåller textboxvärdena även efter uppdatering

  2. Ansluter Oracle till Amazon Aurora

  3. Vad är bättre för din big data-applikation, SQL eller NoSQL?

  4. Infoga arabiska data i mysql-databasen