sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué el cambio de utf8 a utf8mb4 ralentiza mi base de datos?

utf es realmente utfmb3 y puede usar un máximo de 3 bytes por carácter, mientras que utfmb4 puede usar 4 bytes por carácter. Para las columnas VARCHAR, esto normalmente no hace mucha diferencia, ya que MySQL almacenará solo tantos bytes como sea necesario (a menos que haya creado sus tablas MyISAM con ROW_FORMAT=FIXED).

Sin embargo, durante la ejecución de consultas, MySQL puede crear tablas temporales en el motor de almacenamiento MEMORY que no admite filas de longitud variable. Estas tablas temporales tienen un tamaño máximo, y si se excede ese tamaño, las tablas temporales se convertirán en tablas en MyISAM/InnoDB (dependiendo de su versión de MySQL). La variable de estado Created_tmp_disk_tables se incrementará cada vez que esto suceda. Si es así, intente ver si ayuda a aumentar el valor de max_heap_table_size y tmp_table_size .

Como alternativa, actualice a MySQL 8.0, donde se usa un nuevo motor de almacenamiento que admite filas de longitud variable para las tablas temporales internas.