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

Exemple détaillé de la façon de modifier la taille de la page de données d'Innodb pour optimiser MySQL

怪我咯
怪我咯original
2017-07-05 11:22:291665parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn