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

Hvorfor gjorde ændringen fra utf8 til utf8mb4 min database langsommere?

utf er virkelig utfmb3 og må maks. bruge 3 bytes pr. tegn, mens utfmb4 må bruge 4 bytes pr. tegn. For VARCHAR-kolonner betyder dette normalt ikke den store forskel, da MySQL kun gemmer så mange bytes som nødvendigt (medmindre du har oprettet dine MyISAM-tabeller med ROW_FORMAT=FIXED).

Under udførelse af forespørgsler kan MySQL dog oprette midlertidige tabeller i MEMORY-lagermotoren, som ikke understøtter rækker med variabel længde. Disse midlertidige tabeller har en maksimal størrelse, og hvis den størrelse overskrides, vil de midlertidige tabeller blive konverteret til tabeller i MyISAM/InnoDB (afhængigt af din version af MySQL). Statusvariablen Created_tmp_disk_tables vil blive øget hver gang dette sker. Hvis ja, så prøv at se, om det hjælper at øge værdien af ​​max_heap_table_size og tmp_table_size .

Alternativt kan du opgradere til MySQL 8.0, hvor en ny lagermotor, der understøtter rækker med variabel længde, bruges til interne midlertidige tabeller.




  1. Bedste måde at gemme og hente synonymer i databasen mysql

  2. Caching af MySQL-forespørgsler

  3. Hvordan kører man en lagret procedure i sql server hver time?

  4. Hvordan fungerer SQL's konverterfunktion, når datetime konverteres til float?