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

mySQL partición multi-archivo vs rendimiento de un archivo?

Como ya ha dicho -innodb_file_per_table decidirá si una tabla se almacenará en un archivo o (si se particiona) en muchos archivos.

Aquí hay algunos pros y contras de cada enfoque (no es necesario una lista completa).

Single file per table                    Multiple files per (partitioned) table
--------------------------------------   --------------------------------------
+ System uses less filehandles           - System uses more filehandles
+ One one fsync per second per table     - Possibly many more fsync calls (bottleneck)
  (less fs overhead (journal etc))         (more fs overhead)
+ Single file uses less space overall    - Much larger disk space usage
- Single file fragments badly            + Less fragmentation 
- Optimize table (et al) takes longer    + You can choose to optimize just one file
- One file = one filesystem              + You can put heavy traffic files on a fast fs
                                           (e.g. on a solid state disk)
- Impossible to reclaim disk space       + possible to emergency-reclaim disk space 
  in a hurry (truncate table takes long)   fast (just delete a file)
- ALTER TABLE can use large % of disk-   + rebuilding with ALTER TABLE will use less
  space for temp tables while rebuilding   temp disk space

En general no recomiende varios archivos.
Sin embargo, si su carga de trabajo conduce a una gran fragmentación y optimize table lleva demasiado tiempo, usar varios archivos tendrá sentido.

Olvídate de recuperar espacio
Algunas personas hacen mucho alboroto por el hecho de que en InnoDB los archivos de tabla siempre crecen y nunca se reducen, lo que lleva a que se desperdicie espacio si se eliminan las filas.
Luego idean esquemas para recuperar ese espacio para para no quedarse sin espacio libre en disco. (truncate table x ) durante con su tabla estará completamente bloqueada (no se permiten lecturas ni escrituras).
Solo para descubrir que su disco lleno al 90% (50% después de la recuperación) estará lleno al 99% después de las adiciones de datos de los próximos meses.

Sin embargo, cuando utilice ALTER TABLE tenga cuidado...
Considere el siguiente escenario:
- El disco está lleno al 60 %.
- La base de datos ocupa el 50 %, otros archivos ocupan el 10 %.
Si realiza una modificación alter table en cualquier tabla, se quedará sin espacio en disco si tiene todas las tablas en un solo archivo.
Si lo tiene en varios archivos, no debería tener problemas (aparte de la sobredosis de cafeína por toda esa espera).