Para calcular el tamaño que tenemos que poner en nuestra configuración de mysql en el key_buffer_size, es tan simple como ejecutar este comando, ya sea desde mysq por php o cualquier programa que nos permita ejecutar querys, o también desde consola ssh. Tenemos en cuenta que este valor es para MyISAM.
SELECT CONCAT(ROUND(KBS/POWER(1024, IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999), SUBSTR(' KMG',IF(PowerOf1024<0,0, IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_key_buffer_size FROM (SELECT LEAST(POWER(2,32),KBS1) KBS FROM (SELECT SUM(index_length) KBS1 FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) AA ) A, (SELECT 2 PowerOf1024) B;
El valor que nos devuelva es el que tendremos que poner de la siguiente forma
key_buffer_size=1024M
cambiando el número porl ese valor.
En caso de querer realizar la misma accion para calcular el valor para InnoDB innodb_buffer_pool_size, la query a ejecutar es la siguiente:
SELECT CONCAT(ROUND(KBS/POWER(1024, IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999), SUBSTR(' KMG',IF(PowerOf1024<0,0, IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables WHERE engine='InnoDB') A, (SELECT 2 PowerOf1024) B;