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

更改Innodb 數據頁大小優化MySQL,innodbmysql

編輯:MySQL綜合教程

更改Innodb 數據頁大小優化MySQL,innodbmysql


更改Innodb 數據頁大小優化MySQL

http://www.mysqlsupport.cn/change_innodb_page_size/

更改Innodb 數據頁大小優化MySQL

2009年12月13日 Posted by wubx

     作者:吳炳錫 來源:http://www.mysqlsupport.cn/ 聯系方式: wubingxi#gmail.com 轉載請注明作/譯者和出處,並且不能用於商業用途,違者必究。
         我們知道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!

Updated: 2009年12月13日 at 14:27 標簽:innodb頁大小 ◀ Innodb如何使用內存 Innodb 文件表空間結構 ▶

ABOUT THE AUTHOR

wubx

Comments

  1. rj03hou 2010年07月23日 20:43

    innodb plugin已經可以設置page size,通過設置page size來實現block的壓縮功能。
    對了,請問最終你有沒有進行測試?測試結果能否公布?

    回復
  2. ruochen 2010年04月8日 14:41

    xtradb准備支持多page size,在創建數據庫時可以指定,其他的很多特性


怎減少mysql數據庫innodb數據文件大小

如果你的數據查詢量不是非常大的情況下 不建議你使用 innodb
這東西需要能幫你提高mysql的效率。但占用的資源可不是一般大
在允許的情況下還是建議禁用。不是特大查詢量的,mysql自己能處理
 

問mysql這更改innodb buffer的緩沖大小?

windows下面 my.ini
Linux下面 my.cnf

innodb_buffer_pool_size = XXXXM
注意把前面的#去掉
 

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