Mysql存儲引擎介紹: 1、類型
2、區(qū)別 3、innodb存儲引擎優(yōu)化 目前來說:InnoDB是為Mysql處理巨大數(shù)據(jù)量時的最大性能設計。它的CPU效率可能是任何其它基于磁盤的關系數(shù)據(jù)庫引擎所不能匹敵的。在數(shù)據(jù)量大
的網(wǎng)站或是應用中Innodb是倍受青睞的。另一方面,在數(shù)據(jù)庫的復制操作中Innodb也是能保證master和slave數(shù)據(jù)一致有一定的作用。 設置內(nèi)容: 1. 內(nèi)存利用方面 參數(shù):innodb_buffer_pool_size 默認分配只有8M。如果是一個專用DB服務器,那么他可以占到內(nèi)存的70%-80%。這個參數(shù)不能動態(tài)更改,所以分配需
多考慮。分配過大,會使Swap占用過多,致使Mysql的查詢特慢。如果你的數(shù)據(jù)比較小,那么可分配是你的數(shù)據(jù)大小+10%左右做為這個參數(shù)的值。show innodb status,執(zhí)行此命令,去確認大小。 例如:數(shù)據(jù)大小為50M,那么給這個值分配innodb_buffer_pool_size=64M 參數(shù): innodb_additional_mem_pool 系統(tǒng)可以自動調(diào),不用設置太高。 2. 日值控制方面 參數(shù):innodb_log_file_size 這個值分配的大小和數(shù)據(jù)庫的寫入速度,事務大小,異常重啟后的恢復有很大的關系。設置方法:innodb_log_file_size=256M 參數(shù):innodb_log_files_in_group 指定你有幾個日值組。 分配原則: 一般我們可以用2-3個日值組。默認為兩個。 設置方法:innodb_log_files_in_group=3
參數(shù):innodb_log_buffer_size:
作用:事務在內(nèi)存中的緩沖。分配原則:控制在2-8M.這個值不用太多的。他里面的內(nèi)存一般一秒鐘寫到磁盤一次。具體寫入方式和你的事務提交方式有關。 參考:Innodb_os_log_written(show global status 可以拿到)如果這個值增長過快,可以適當?shù)脑黾觟nnodb_log_buffer_size另外如果你需要處理大理的TEXT,或是BLOB字段,可以考慮增加這個參數(shù)的值。 設置方法:innodb_log_buffer_size=3M 參數(shù):innodb_flush_logs_at_trx_commit 作用:控制事務的提交方式分配原則:這個參
數(shù)只有3個值,0,1,2請確認一下自已能接受的級別。默認為1,主庫請不要更改了。性能更高的可以設置為0或是2,但會丟失一秒鐘的事務。說明:這個參
數(shù)的設置對Innodb的性能有很大的影響,所以在這里給多說明一下。當這個值為1時:innodb
的事務LOG在每次提交后寫入日值文件,并對日值做刷新到磁盤。這個可以做到不丟任何一個事務。當這個值為2時:在每個提交,日志緩沖被寫到文件,但不對
日志文件做到磁盤操作的刷新,在對日志文件的刷新在值為2的情況也每秒發(fā)生一次。但需要注意的是,由于進程調(diào)用方面的問題,并不能保證每秒100%的發(fā)
生。從而在性能上是最快的。但操作系統(tǒng)崩潰或掉電才會刪除最后一秒的事務。當這個值為0時:日志緩沖每秒一次地被寫到日志文件,并且對日志文件做到磁盤操
作的刷新,但是在一個事務提交不做任何操作。mysqld進程的崩潰會刪除崩潰前最后一秒的事務。 從以上分析,當這個值不為1時,可以取得較好的性能,但遇到異常會有損失,所以需要根據(jù)自已的情況去衡量。 設置方法:innodb_flush_logs_at_trx_commit=1 3.文件IO分配,空間占用方面 參數(shù):innodb_file_per_table 作用:使每個Innodb的表,有自已獨立的表空間。如刪除文件后可以回收那部分空間。分配原則:只有使用不使用。但DB還需要有一個公共的表空間。設置方法:innodb_file_per_table=1 innodb_file_io_threads作用:文件讀寫IO數(shù),這個參數(shù)只在Windows上起作用。在LINUX上只會等于4設置方法:innodb_file_io_threads=4 innodb_open_files作用:限制Innodb能打開的表的數(shù)據(jù)。分配原則:如果庫里的表特別多的情況,請增加這個。這個值默認是300。設置方法:innodb_open_files=800 請適當?shù)脑黾觮able_cache
4. 其它相關參數(shù) 參數(shù):innodb_flush_method 作用:Innodb和系統(tǒng)打交道的一個IO模型分配原則,Unix可以設置:fsync() or
O_SYNC/O_DSYNC如果系統(tǒng)可以禁止系統(tǒng)的Cache那就把他禁了。Linux可以選擇:O_DIRECT
直接寫入磁盤,禁止系統(tǒng)Cache了 設置方法:innodb_flush_method=O_DIRECT 參數(shù):innodb_max_dirty_pages_pct 控制Innodb的臟頁在緩沖中在那個百分比之下,值在范圍1-100,默認為90.這個參數(shù)的另一個用處:當Innodb的內(nèi)存分配過大,致使
Swap占用嚴重時,可以適當?shù)臏p小調(diào)整這個值,使達到Swap空間釋放出來。建義:這個值最大在90%,最小在15%。太大,緩存中每次更新需要致?lián)Q數(shù)據(jù)頁太多,太小,放的數(shù)據(jù)頁太小,更新操作太慢。設置方
法:innodb_max_dirty_pages_pct=90動態(tài)更改需要有Super權限:set global
innodb_max_dirty_pages_pct=50;
|