修改Innodb的資料頁大小以優化MySQL的方法

2022-09-29 12:57:12 字數 1749 閱讀 8949

我們知道innodb的資料頁是16k,而且是乙個硬性的規定,系統裡沒更改的辦法,希望將來mysql也能也oracle一樣支援多種資料頁的大小。

但實際應用中有時16k顯的有點大了,特別是很多業務在oracle或是sql server執行的挺好的情況下遷到了mysql上發現io增長太明顯的情況下,

就會想到更改資料頁大小了。

實際上innodb的資料頁大小也是可以更改的,只是需要在原始碼層去更改,然後重新rebuild一下mysql.

更改辦法:

(以mysql-5.1.38原始碼為例)

位置在storage/innobase/include/univ.i ,在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就是資料頁大小,預設的是16k. 後面的備註裡標明,該值是可以設定必須為2的次方。對於該值可以設定成4k,8k,16k,32k,64k,在大也沒意義了。

同時更改了univ_page_size後需要更改 univ_page_size_shift 該值是2的多少次方為univ_page_size,所以設定資料頁分別情況如下:

&nb程式設計客棧sp;

#define univ_page_size_shift 12 if univ_page_siz=4k

#definbepoucslzse univ_page_size_shift 13 if univ_page_siz=8k

#define univ_page_size_shift 15 if univ_page_siz=32k

例子: 更改innodb的資料頁為8k,相應修改為:

/*database version control

********************====*/

/* the universal page size of twww.cppcns.comhe 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 bepoucslzs*/

#define univ_max_parallelism 32

重新編譯,然後測試測試,再測試。good luck!

本文標題: 修改innodb的資料頁大小以優化mysql的方法

本文位址:

修改Innodb的資料頁大小以優化MySQL的方法

我們知道innodb的資料頁是16k,而且是乙個硬性的規定,系統裡沒更改的辦法,希望將來mysql也能也oracle一樣支援多種資料頁的大小。但實際應用中有時16k顯的有點大了,特別是很多業務在oracle或是sql server執行的挺好的情況下遷到了mysql上發現io增長太明顯的情況下,就會想...

InnoDB資料頁結構

file header 檔案頭 page header 頁頭 infimun和supermum records user records 使用者記錄,即行記錄 free space 空閒空間 page directory 頁目錄 file trailer 檔案結尾資訊 file header pag...

Mysql資料讀取方式以及InnoDb頁儲存

將資料劃分為若干個頁,以頁作為磁碟和記憶體之間互動的基本單位,inoodb中頁的大小為16kb,一般情況下一次最少讀取16kb到記憶體中並重新整理到磁碟。1頁中至少存放兩行記錄 mysql表中行儲存資料分四種 compact redundant dynamic和compressed行格式。儲存結構類...