Maison > Article > base de données > Exemple détaillé de la façon de modifier la taille de la page de données d'Innodb pour optimiser MySQL
Cet article présente principalement la méthode de modification de la taille de la page de données d'Innodb pour optimiser MySQL est le prochain moteur de données populaire de MySQL auquel les amis qui en ont besoin peuvent se référer.
Nous savons que la page de données d'Innodb fait 16 Ko, et c'est une règle rigide. Il n'y a aucun moyen de la modifier dans le système. Nous espérons que MySQL pourra prendre en charge plusieurs tailles de page de données comme Oracle à l'avenir. .
Mais dans les applications réelles, parfois 16 Ko est un peu trop grand, surtout lorsque de nombreuses entreprises migrent vers MySQL alors qu'Oracle ou SQL SERVER fonctionnent très bien et trouvent que la croissance des E/S est trop évidente,
J'ai pensé à changer les données taille des pages.
En fait, la taille de la page de données d'innodb peut également être modifiée. Il vous suffit de la modifier au niveau de la couche de code source, puis de reconstruire MySQL.
Méthode de changement :
(Prenez la source MySQL-5.1.38. code à titre d'exemple)
L'emplacement est dans storage/innobase/include/univ.i, recherchez dans univ.i : UNIV_PAGE_SIZE
/* DATABASE VERSION CONTROL ======================== */ /* The universal page size of the database */ #define UNIV_PAGE_SIZE (2 * 8192) /* NOTE! Currently, this has to be a power of 2 */ /* The 2-logarithm of UNIV_PAGE_SIZE: */ #define UNIV_PAGE_SIZE_SHIFT 14 /* Maximum number of parallel threads in a parallelized operation */ #define UNIV_MAX_PARALLELISM 32
UNIV_PAGE_SIZE est la taille de la page de données , la valeur par défaut est 16K. Ce qui suit Les remarques indiquent que cette valeur peut être réglée à une puissance de 2. Cette valeur peut être définie sur 4k, 8k, 16k, 32K, 64K, ce qui n'a aucun sens dans les grandes applications.
Après avoir modifié UNIV_PAGE_SIZE en même temps, vous devez modifier UNIV_PAGE_SIZE_SHIFT. La valeur est UNIV_PAGE_SIZE à la puissance 2, donc les paramètres des pages de données sont les suivants :
#define UNIV_PAGE_SIZE_SHIFT 12 if UNIV_PAGE_SIZ=4K #define UNIV_PAGE_SIZE_SHIFT 13 if UNIV_PAGE_SIZ=8K #define UNIV_PAGE_SIZE_SHIFT 15 if UNIV_PAGE_SIZ=32K
Exemple :
Changez la page de données d'innodb en 8K, la modification correspondante est :
/* DATABASE VERSION CONTROL ======================== */ /* The universal page size of the database */ #define UNIV_PAGE_SIZE 8192 /* NOTE! Currently, this has to be a power of 2 */ /* The 2-logarithm of UNIV_PAGE_SIZE: */ #define UNIV_PAGE_SIZE_SHIFT 13 /* Maximum number of parallel threads in a parallelized operation */ #define UNIV_MAX_PARALLELISM 32
Recompilez, puis testez, testez et testez à nouveau. Bonne chance !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!