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

2021-09-28 15:46:22 字數 1714 閱讀 2574

我們知道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

12345678910111213

/*  database

version control  ********************====*/ 

/* the universal page size

ofthe 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,所以設定資料頁分別情況如下:

123#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

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

12345678910111213

/*  database

version control  ********************====*/ 

/* the universal page size

ofthe 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

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

修改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行格式。儲存結構類...