sql >> Database >  >> RDS >> Mysql

Waarom vertraagt ​​het veranderen van utf8 naar utf8mb4 mijn database?

utf is echt utfmb3 en mag maximaal 3 bytes per teken gebruiken, terwijl utfmb4 4 bytes per teken mag gebruiken. Voor VARCHAR-kolommen maakt dit normaal gesproken niet veel uit, aangezien MySQL slechts zoveel bytes zal opslaan als nodig is (tenzij u uw MyISAM-tabellen hebt gemaakt met ROW_FORMAT=FIXED).

Tijdens het uitvoeren van query's kan MySQL echter tijdelijke tabellen maken in de MEMORY-opslagengine die geen rijen met variabele lengte ondersteunt. Deze tijdelijke tabellen hebben een maximale grootte en als die grootte wordt overschreden, worden de tijdelijke tabellen geconverteerd naar tabellen in MyISAM/InnoDB (afhankelijk van uw versie van MySQL). De statusvariabele Created_tmp_disk_tables wordt elke keer dat dit gebeurt verhoogd. Zo ja, probeer dan te zien of het helpt om de waarde van max_heap_table_size te verhogen en tmp_table_size .

U kunt ook upgraden naar MySQL 8.0, waar een nieuwe opslagengine wordt gebruikt die rijen met variabele lengte ondersteunt voor interne tijdelijke tabellen.




  1. Een veilige PHP-klasse die verbinding maakt met MySQL?

  2. AlwaysOn-beschikbaarheidsgroepen:Quorum

  3. MySQl-database herstellen van .frm, ibdata en ib_logfile

  4. pyodbc.connect() werkt, maar niet sqlalchemy.create_engine().connect()