程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 修正Innodb的數據頁年夜小以優化MySQL的辦法

修正Innodb的數據頁年夜小以優化MySQL的辦法

編輯:MySQL綜合教程

修正Innodb的數據頁年夜小以優化MySQL的辦法。本站提示廣大學習愛好者:(修正Innodb的數據頁年夜小以優化MySQL的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是修正Innodb的數據頁年夜小以優化MySQL的辦法正文


我們曉得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,所以設置數據頁分離情形以下:

 

#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,響應修正為:

 

/*
  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

從新編譯,然後測試測試,再測試。Good luck!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved