In diesem Artikel wird hauptsächlich die Methode zum Ändern der Datenseitengröße von Innodb zur Optimierung vorgestellt. MySQL ist die nächste beliebte Daten-Engine von MySQL
Wir wissen, dass die Datenseite von Innodb eine starre Regel ist. Es gibt keine Möglichkeit, sie im System zu ändern. Wir hoffen, dass MySQL in Zukunft mehrere Datenseitengrößen unterstützen kann .
Aber in tatsächlichen Anwendungen sind 16 KB manchmal etwas zu groß, insbesondere wenn viele Unternehmen zu MySQL migrieren, wenn Oracle oder SQL SERVER sehr gut laufen, und feststellen, dass das IO-Wachstum zu offensichtlich ist.
Ich dachte darüber nach, die Daten zu ändern Seitengröße.
Tatsächlich kann die Datenseitengröße von innodb auch geändert werden. Sie müssen sie nur auf der Quellcodeebene ändern und dann MySQL neu erstellen.
Methode ändern:
(Nehmen Sie die MySQL-5.1.38-Quelle Code als Beispiel)
Der Speicherort ist in storage/innobase/include/univ.i, Suche in 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 ist die Datenseitengröße , der Standardwert ist 16K. Was folgt: Die Bemerkungen zeigen, dass dieser Wert auf eine Potenz von 2 eingestellt werden kann. Dieser Wert kann auf 4k, 8k, 16k, 32k, 64k eingestellt werden, was bei großen Anwendungen bedeutungslos ist.
Nachdem Sie gleichzeitig UNIV_PAGE_SIZE geändert haben, müssen Sie UNIV_PAGE_SIZE_SHIFT ändern. Der Wert ist die Potenz von 2 als UNIV_PAGE_SIZE, daher lauten die Einstellungen der Datenseiten wie folgt:
#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
Beispiel:
Ändern Sie die Datenseite von innodb auf 8K. Die entsprechende Änderung lautet:
/* 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
Neu kompilieren, dann testen, testen und erneut testen. Viel Glück!
Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Änderung der Datenseitengröße von Innodb zur Optimierung von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!